本文整理汇总了C++中MamdaOrderBook::findLevel方法的典型用法代码示例。如果您正苦于以下问题:C++ MamdaOrderBook::findLevel方法的具体用法?C++ MamdaOrderBook::findLevel怎么用?C++ MamdaOrderBook::findLevel使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MamdaOrderBook
的用法示例。
在下文中一共展示了MamdaOrderBook::findLevel方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: applyEntry
/**
* Helper function to apply a MamdaBookAtomicLevelEntry to
* a MamdaOrderBook
*/
void applyEntry (const MamdaBookAtomicLevelEntry& levelEntry)
{
MamdaOrderBookEntry::Action entryAction;
if(mOrderBook.getQuality() == MAMA_QUALITY_OK)
{
entryAction = (MamdaOrderBookEntry::Action) levelEntry.getPriceLevelEntryAction();
switch(entryAction)
{
case MamdaOrderBookEntry::MAMDA_BOOK_ACTION_UPDATE :
try
{
//get the price level by price
mLevelPtr = mOrderBook.findLevel(
levelEntry.getPriceLevelPrice(),
(MamdaOrderBookPriceLevel::Side) levelEntry.getPriceLevelSide());
if(mLevelPtr != NULL)
{
//get the entry by id
mEntryPtr = mLevelPtr->findEntry(levelEntry.getPriceLevelEntryId());
if(mEntryPtr != NULL)
{
mOrderBook.updateEntry(
mEntryPtr,
levelEntry.getPriceLevelEntrySize(),
levelEntry.getPriceLevelEntryTime(),
(MamdaOrderBookBasicDelta*) NULL);
break;
}
}
/*
* intentional fall through to add the entry if
* the entry or level cannot be found to update it
*/
}
catch ( MamdaOrderBookInvalidEntry &e)
{
cout<< "atomicbookbuilder: could not update entry.\n";
cout << "Caught MamdaOrderBookInvalidEntry [" << e.what() << "]\n";
}
catch (MamdaOrderBookException &e)
{
cout<< "atomicbookbuilder: could not update entry.\n";
cout<< "Caught MamdaOrderBookException [" << e.what() << "[\n";
}
case MamdaOrderBookEntry::MAMDA_BOOK_ACTION_ADD :
mEntryPtr = mOrderBook.addEntry(
levelEntry.getPriceLevelEntryId(),
levelEntry.getPriceLevelEntrySize(),
levelEntry.getPriceLevelPrice(),
(MamdaOrderBookPriceLevel::Side) levelEntry.getPriceLevelSide(),
levelEntry.getPriceLevelEntryTime(),
(const MamaSourceDerivative*) NULL,
(MamdaOrderBookBasicDelta*) NULL);
mEntryPtr->setReason(
(MamdaOrderBookTypes::Reason)levelEntry.getPriceLevelEntryReason());
break;
case MamdaOrderBookEntry::MAMDA_BOOK_ACTION_DELETE :
try
{
//get the price level by price
mLevelPtr = mOrderBook.findLevel(
levelEntry.getPriceLevelPrice(),
(MamdaOrderBookPriceLevel::Side) levelEntry.getPriceLevelSide());
if(mLevelPtr != NULL)
{
//get the entry by id
mEntryPtr = mLevelPtr->findEntry(levelEntry.getPriceLevelEntryId());
if(mEntryPtr != NULL)
mOrderBook.deleteEntry(
mEntryPtr,
levelEntry.getPriceLevelEntryTime(),
(MamdaOrderBookBasicDelta*) NULL);
}
}
catch ( MamdaOrderBookInvalidEntry &e)
{
cout<< "atomicbookbuilder: could not delete entry.\n";
cout << "Caught MamdaOrderBookInvalidEntry [" << e.what() << "]\n";
}
catch (MamdaOrderBookException &e)
{
cout<< "atomicbookbuilder: could not delete entry.\n";
cout<< "Caught MamdaOrderBookException [" << e.what() << "[\n";
}
break;
default:
cout << "atomicbookbuilder: Unknown entry action ["
<< (char)entryAction << "]\n";
break;
}
//.........这里部分代码省略.........