void CDialogHolder::SetMainInputReceiver (CUIDialogWnd* ir, bool _find_remove) { if( MainInputReceiver() == ir ) return; if(!ir || _find_remove){ if(m_input_receivers.empty()) return; if(!ir) m_input_receivers.pop_back(); else{ VERIFY(ir && _find_remove); u32 cnt = m_input_receivers.size(); for(;cnt>0;--cnt) if( m_input_receivers[cnt-1].m_item == ir ){ m_input_receivers[cnt].m_flags.set(recvItem::eCrosshair, m_input_receivers[cnt-1].m_flags.test(recvItem::eCrosshair) ); m_input_receivers[cnt].m_flags.set(recvItem::eIndicators, m_input_receivers[cnt-1].m_flags.test(recvItem::eIndicators) ); xr_vector<recvItem>::iterator it = m_input_receivers.begin(); std::advance (it,cnt-1); m_input_receivers.erase (it); break; } } }else{ m_input_receivers.push_back(recvItem(ir)); } };
void p3ZeroReserveRS::processIncoming() { RsItem *item = NULL; while(NULL != (item = recvItem())){ switch( item->PacketSubType() ) { case RsZeroReserveItem::ZERORESERVE_ORDERBOOK_ITEM: handleOrder( dynamic_cast<RsZeroReserveOrderBookItem*>( item ) ); break; case RsZeroReserveItem::ZERORESERVE_TX_INIT_ITEM: case RsZeroReserveItem::ZERORESERVE_TX_ITEM: TransactionManager::handleTxItem( dynamic_cast<RsZeroReserveTxItem*>( item ) ); break; case RsZeroReserveItem::ZERORESERVE_CREDIT_ITEM: handleCredit( dynamic_cast<RsZeroReserveCreditItem*>( item ) ); break; case RsZeroReserveItem::ZERORESERVE_MSG_ITEM: handleMessage( dynamic_cast<RsZeroReserveMsgItem*>( item ) ); break; case RsZeroReserveItem::ZR_REMOTE_TX_ITEM: TransactionManager::handleTxItem( dynamic_cast<RSZRRemoteTxItem*>( item ) ); break; default: std::cerr << "Zero Reserve: Received Item unknown" << std::endl; } delete item; } }