如何推送和弹出COM DLL中使用的队列结构 [英] How to push and pop Queue structure Used in COM DLL
本文介绍了如何推送和弹出COM DLL中使用的队列结构的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何推送和弹出COM DLL中使用的队列结构
How to push and pop Queue structure Used in COM DLL
void CAutoTrader::GetServer_UpdateTrades()
{
try
{
TradeRecord *td = NULL;
int gtTotal=0,i;
td=server_q->TradesGet(>Total);
std::set<int>set_tempClosed_Orders,set_resultClosed_Orders;
std::set<int>::iterator itgetcticket;
bool isCLoseevent=false;
CString sFormat,str,closeOrderInfo;
AutoTraderInstance=(CAutoTrader*)pObject;
for( i=0;i<gttotal;i++)>
{
//if((td[i].cmd==0 || td[i].cmd==1))
//{
set_tempClosed_Orders.insert(td[i].order);
// }
}
std::set_difference(set_primaryClosed_Orders.begin(), set_primaryClosed_Orders.end(), set_tempClosed_Orders.begin(), set_tempClosed_Orders.end(),std::inserter(set_resultClosed_Orders, set_resultClosed_Orders.end()));
//deallocate_container(set_primaryClosed_Orders);
set_primaryClosed_Orders.clear();
set_primaryClosed_Orders=set_tempClosed_Orders;
for( itgetcticket = set_resultClosed_Orders.begin(); itgetcticket != set_resultClosed_Orders.end(); itgetcticket++ )
{
if(*itgetcticket>0)
{
CString str;
str.Format("%d",*itgetcticket);
s_closeTrades=str.AllocSysString();
AutoTraderInstance->Fire_Server_closeorders(s_closeTrades);
SysFreeString(s_closeTrades);
itmap_TradeRecords=map_TradeRecords.find(*itgetcticket);
if(itmap_TradeRecords!=map_TradeRecords.end())
{
itmap_ClientmanagedRecords = map_ClientmanagedRecords.find(str);
if (itmap_ClientmanagedRecords != map_ClientmanagedRecords.end())
{
server_closedordernos.push(*itgetcticket);
if(itmap_TradeRecords->second.cmd==0)
{
client_closeorder_buy(csClient_User,itmap_ClientmanagedRecords->second,itmap_TradeRecords->second.volume,itmap_TradeRecords->second.symbol,itmap_ClientmanagedRecords->first);
}
else
{
client_closeorder_sell(csClient_User,itmap_ClientmanagedRecords->second,itmap_TradeRecords->second.volume,itmap_TradeRecords->second.symbol,itmap_ClientmanagedRecords->first);
}
}
str.Empty();
std::map<int,traderecord>::iterator itmap_TradeRecordsDel=itmap_TradeRecords;
++itmap_TradeRecords;
map_TradeRecords.erase(itmap_TradeRecordsDel);
}
isCLoseevent=true;
}
}
set_tempClosed_Orders.clear();
set_resultClosed_Orders.clear();
if(isCLoseevent)
return;
推荐答案
这篇关于如何推送和弹出COM DLL中使用的队列结构的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文