1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| void Logic::processMessages()
{
// Connect the addQuote signal to the addQuote slot to update GUI
QObject::connect( this, SIGNAL( addQuote(const timestamp_t&, const price_t&, const quantity_t&, const price_t&, const quantity_t&) ),
quotes_, SLOT ( addQuote(const timestamp_t&, const price_t&, const quantity_t&, const price_t&, const quantity_t&) ) );
// Connect the addTrade signal to the addTrade slot to update GUI
QObject::connect( this, SIGNAL( addTrade(const timestamp_t&, const price_t&, const quantity_t&) ),
trades_, SLOT ( addTrade(const timestamp_t&, const price_t&, const quantity_t&) ) );
// Connect the progress signal to the logicProgress slot to update the progress bar
QObject::connect( this, SIGNAL( progress (datetime_t) ),
simulation_, SLOT ( logicProgress(datetime_t) ) );
// For each pending message
std::deque<ProviderMessage*>::iterator it = pendingMessages_.begin();
for (; it!=pendingMessages_.end(); ++it )
{
// Emit message to update GUI
switch ( (*it)->type() )
{
case ProviderMessage::QUOTE:
{
const QuoteItem* quote = static_cast<const QuoteMessage*>(*it)->quote();
// Update GUI
emit addQuote( quote->timestamp(),
quote->bidPrice(), quote->bidQuantity(),
quote->askPrice(), quote->askQuantity() );
// Update progress
emit progress( quote->timestamp() );
break;
}
case ProviderMessage::TRADE:
{
const TradeItem* trade = static_cast<const TradeMessage*>(*it)->trade();
// Update GUI
emit addTrade( trade->timestamp(), trade->price(), trade->quantity() );
// Update progress
emit progress( trade->timestamp() );
break;
}
}
}
pendingMessages_.clear();
} |
Partager