Пример #1
0
        public void MethodReturnTest()
        {
            MethodReturn return1 = new MethodReturn();
            return1.Exception = new LinkException("error", new NullReferenceException());
            return1.ReturnValue = GetEntity();

            byte[] ret = jsonSerializer.SerializeMethodReturn(return1);
            Console.WriteLine(Encoding.UTF8.GetString(ret));

            MethodReturn return2 = jsonSerializer.DeserializeMethodReturn(ret, typeof(Entity));
            Console.WriteLine(return2.Exception.Message);
            Assert.AreEqual(return1.Exception.Message, return2.Exception.Message);
            Assert.AreEqual(return1.ReturnValue.GetType(), return2.ReturnValue.GetType());
            Assert.AreEqual(((Entity)return1.ReturnValue).String, ((Entity)return2.ReturnValue).String);
            Assert.AreEqual(((Entity)return1.ReturnValue).Dictionary, ((Entity)return2.ReturnValue).Dictionary);
            Assert.AreEqual(((Entity)return1.ReturnValue).Dictionary.Count, ((Entity)return2.ReturnValue).Dictionary.Count);
            Assert.AreEqual(((Entity)return1.ReturnValue).Array[0], ((Entity)return2.ReturnValue).Array[0]);
        }
Пример #2
0
            protected override void OnMessage(object sender, MessageEventArgs e)
            {
                var protocol = new RemotingTcpProtocolHandle(new MemoryStream(e.RawData));
                protocol.ReadPreamble();
                protocol.ReadMajorVersion();
                protocol.ReadMinorVersion();
                ushort operation = protocol.ReadOperation();
                protocol.ReadContentDelimiter();
                protocol.ReadContentLength();
                IDictionary<string, Object> transportHeaders = protocol.ReadTransportHeaders();
                var flag = (int)transportHeaders[RemotingTransportHeader.Flag];
                ISerializer serializer = serializationFactory.Get(null);
                transportHeaders.Clear();
                transportHeaders.Add(RemotingTransportHeader.Flag, flag);

                MethodCall methodCall = serializer.DeserializeMethodCall(protocol.ReadContent());
                var methodReturn = new MethodReturn() { ReturnValue = methodCall.Args[0] };

                byte[] data = serializer.SerializeMethodReturn(methodReturn);

                var response = new MemoryStream();
                var handle = new RemotingTcpProtocolHandle(response);
                handle.WritePreamble();
                handle.WriteMajorVersion();
                handle.WriteMinorVersion();
                handle.WriteOperation(TcpOperations.Reply);
                handle.WriteContentDelimiter(TcpContentDelimiter.ContentLength);
                handle.WriteContentLength(data.Length);
                handle.WriteTransportHeaders(transportHeaders);
                handle.WriteContent(data);

                this.Send(response.ToArray());
            }
Пример #3
0
 public byte[] SerializeMethodReturn(MethodReturn methodReturn)
 {
     _r = methodReturn;
     return new byte[0];
 }
Пример #4
0
 public abstract void OnMethodReturn(MethodReturn methodReturn);
Пример #5
0
 public override void OnMethodReturn(MethodReturn methodReturn)
 {
     this.MethodReturn = methodReturn;
     this._handle.Set();
 }