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); } }
/*** * 下单,具体字段请参考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)); }