如何推送和弹出COM DLL中使用的队列结构 [英] How to push and pop Queue structure Used in COM DLL

查看:51
本文介绍了如何推送和弹出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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆