예제 #1
0
 internal int CancelOrder(CancelMessage cm)
 {
     bool ok = false;
     if (!users.ContainsKey(cm.user_id))
     {
         return -1;
     }
     if (orders[cm.id].buy)
     {
         for (int i = 0; i < buy[orders[cm.id].asset1][orders[cm.id].asset2][orders[cm.id].price].Count; ++i)
         {
             if (buy[orders[cm.id].asset1][orders[cm.id].asset2][orders[cm.id].price][i].id == cm.id)
             {
                 if (buy[orders[cm.id].asset1][orders[cm.id].asset2][orders[cm.id].price][i].user != cm.user_id)
                 {
                     return -1;
                 }
                 buy[orders[cm.id].asset1][orders[cm.id].asset2][orders[cm.id].price].RemoveAt(i);
                 ok = true;
                 break;
             }
         }
     }
     else
     {
         for (int i = 0; i < sell[orders[cm.id].asset1][orders[cm.id].asset2][orders[cm.id].price].Count; ++i)
         {
             if (sell[orders[cm.id].asset1][orders[cm.id].asset2][orders[cm.id].price][i].id == cm.id)
             {
                 if (sell[orders[cm.id].asset1][orders[cm.id].asset2][orders[cm.id].price][i].user != cm.user_id)
                 {
                     return -1;
                 }
                 sell[orders[cm.id].asset1][orders[cm.id].asset2][orders[cm.id].price].RemoveAt(i);
                 ok = true;
                 break;
             }
         }
     }
     if (!ok)
     {
         return -2;
     }
     return 0;
 }