Exemple #1
0
        /// <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));
            }
        }