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]); }
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()); }
public byte[] SerializeMethodReturn(MethodReturn methodReturn) { _r = methodReturn; return new byte[0]; }
public abstract void OnMethodReturn(MethodReturn methodReturn);
public override void OnMethodReturn(MethodReturn methodReturn) { this.MethodReturn = methodReturn; this._handle.Set(); }