/// <inheritdoc /> public void CreateMethodReader(Stream stream, out IMethodCallReader callReader, out IMethodResultReader resultReader, IRemotingEndPoint endPoint = null) { var textReader = new StreamReader(stream, _writerSettings.Encoding, detectEncodingFromByteOrderMarks: true, bufferSize: 4096, leaveOpen: true); var reader = XmlReader.Create(textReader, _readerSettings); reader.MoveToContent(); switch (reader.Name) { case MethodCallElementName: callReader = new XmlMethodCallReader(this, textReader, reader, _methodStorage, endPoint); resultReader = null; break; case MethodResultElementName: callReader = null; resultReader = new XmlMethodResultReader(this, textReader, reader, _methodStorage, endPoint); break; default: throw new NotImplementedException(); } }
/// <inheritdoc /> public void CreateMethodReader(Stream stream, out IMethodCallReader callReader, out IMethodResultReader resultReader, IRemotingEndPoint endPoint = null) { var reader = new BinaryReader(stream, Encoding.UTF8, true); var type = (MessageType2)reader.ReadByte(); if (type == MessageType2.Call) { callReader = new BinaryMethodCallReader(this, reader); resultReader = null; } else if ((type & MessageType2.Result) == MessageType2.Result) { callReader = null; resultReader = new BinaryMethodResultReader(this, reader); } else { throw new InvalidEnumArgumentException("type", (int)type, typeof(MessageType2)); } }