コード例 #1
0
ファイル: TestStubConnector.cs プロジェクト: qipa/OncRpc
        public TResp Request <TReq, TResp>(call_body callBody, TReq reqArgs)
        {
            UdpReader mr      = new UdpReader(_receivedArray);
            Reader    r       = Toolkit.CreateReader(mr);
            rpc_msg   respMsg = r.Read <rpc_msg>();


            rpc_msg reqHeader = new rpc_msg()
            {
                xid  = respMsg.xid,                // use xid in _receivedArray
                body = new body()
                {
                    mtype = msg_type.CALL,
                    cbody = callBody
                }
            };

            UdpWriter dtg = new UdpWriter();
            Writer    w   = Toolkit.CreateWriter(dtg);

            w.Write(reqHeader);
            w.Write(reqArgs);

            byte[] outBuff = dtg.Build();
            Assert.AreEqual(_expectedSendArray, outBuff, "send dump is difference");

            Toolkit.ReplyMessageValidate(respMsg);
            TResp respArgs = r.Read <TResp>();

            mr.CheckEmpty();

            return(respArgs);
        }
コード例 #2
0
        private void BuildMessage(object state)
        {
            byte[] datagram;
            try
            {
                UdpWriter uw = new UdpWriter();
                _sendingTicket.BuildRpcMessage(uw);
                datagram = uw.Build();
            }
            catch (Exception ex)
            {
                Log.Debug("UDP datagram not builded (xid:{0}) reason: {1}", _sendingTicket.Xid, ex);
                lock (_sync)
                    _handlers.Remove(_sendingTicket.Xid);
                _sendingTicket.Except(ex);
                OnSend();
                return;
            }


            Log.Debug("Begin sending UDP datagram (xid:{0})", _sendingTicket.Xid);
            _client.AsyncWrite(datagram, OnDatagramWrited);
        }