Пример #1
0
        public TrdPlaceOrder.Response PlaceOrderSync(TrdPlaceOrder.C2S c2s)
        {
            ReqInfo reqInfo   = null;
            Object  syncEvent = new Object();

            lock (syncEvent)
            {
                lock (trdLock)
                {
                    if (trdConnStatus != ConnStatus.READY)
                    {
                        return(null);
                    }
                    TrdPlaceOrder.Request req = TrdPlaceOrder.Request.CreateBuilder().SetC2S(c2s).Build();
                    uint sn = trd.PlaceOrder(req);
                    if (sn == 0)
                    {
                        return(null);
                    }
                    reqInfo = new ReqInfo(ProtoID.TrdPlaceOrder, syncEvent);
                    trdReqInfoMap.Add(sn, reqInfo);
                }
                Monitor.Wait(syncEvent);
                return((TrdPlaceOrder.Response)reqInfo.Rsp);
            }
        }
Пример #2
0
 /***
  * 下单,具体字段请参考Trd_PlaceOrder.proto协议
  * @param req
  * @return 请求的序列号
  */
 public uint PlaceOrder(TrdPlaceOrder.Request req)
 {
     if (req.HasC2S)
     {
         Common.PacketID packetID = NextPacketID();
         req = req.ToBuilder().SetC2S(req.C2S.ToBuilder().SetPacketID(packetID)).Build();
     }
     return(SendProto((uint)ProtoID.TrdPlaceOrder, req));
 }