Click here to Skip to main content
15,867,453 members
Please Sign up or sign in to vote.
1.00/5 (3 votes)
See more:
How to push and pop Queue structure Used in COM DLL

C++
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;
Posted
Updated 28-May-14 6:05am
v4
Comments
KaushalJB 28-May-14 7:49am    
Post your code that you have tried so far.
Richard MacCutchan 28-May-14 12:04pm    
Please do not post additional information as a Solution. Use the Improve question link and edit your original post.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900