public TcpServerTransport(
			ServerEventLoop eventLoop,
			RpcServerOptions options,
			RequestMessageSerializer requestMessageSerializer,
			ResponseMessageSerializer responseMessageSerializer
		)
        {
            if ( eventLoop == null )
            {
                throw new ArgumentNullException( "eventLoop" );
            }

            if ( requestMessageSerializer == null )
            {
                throw new ArgumentNullException( "requestMessageSerializer" );
            }

            if ( responseMessageSerializer == null )
            {
                throw new ArgumentNullException( "responseMessageSerializer" );
            }

            Contract.EndContractBlock();

            this._eventLoop = eventLoop;
            this._options = options;
            this._requestSerializer = requestMessageSerializer;
            this._responseSerializer = responseMessageSerializer;
        }
示例#2
0
        protected ClientTransport( RpcTransportProtocol protocol, ClientEventLoop eventLoop, RpcClientOptions options )
        {
            if ( eventLoop == null )
            {
                throw new ArgumentNullException( "eventLoop" );
            }

            Contract.EndContractBlock();

            this._eventLoop = eventLoop;
            this._requestSerializer = ClientServices.RequestSerializerFactory.Create( protocol, options );
            this._responseSerializer = ClientServices.ResponseDeserializerFactory.Create( protocol, options );
            this._drainTimeout = options == null ? TimeSpan.FromSeconds( 3 ) : options.DrainTimeout ?? TimeSpan.FromSeconds( 3 );
            this._options = options ?? new RpcClientOptions();
            this._options.Freeze();
        }
        public static RpcOutputBuffer SerializeNotification( String method, params object[] arguments )
        {
            RpcOutputBuffer result = new RpcOutputBuffer( ChunkBuffer.CreateDefault() );
            var error =
                new RequestMessageSerializer(
                        Arrays<IFilterProvider<RequestMessageSerializationFilter>>.Empty,
                        Arrays<IFilterProvider<SerializedMessageFilter<MessageSerializationContext>>>.Empty,
                        Arrays<IFilterProvider<SerializedMessageFilter<MessageDeserializationContext>>>.Empty,
                        Arrays<IFilterProvider<RequestMessageDeserializationFilter>>.Empty,
                        null
                ).Serialize( null, method, arguments, result );
            if ( !error.IsSuccess )
            {
                throw error.ToException();
            }

            return result;
        }
        public static RequestMessage DeserializeRequestOrNotification( IEnumerable<byte> input )
        {
            RequestMessage result;
            var error =
                new RequestMessageSerializer(
                        Arrays<IFilterProvider<RequestMessageSerializationFilter>>.Empty,
                        Arrays<IFilterProvider<SerializedMessageFilter<MessageSerializationContext>>>.Empty,
                        Arrays<IFilterProvider<SerializedMessageFilter<MessageDeserializationContext>>>.Empty,
                        Arrays<IFilterProvider<RequestMessageDeserializationFilter>>.Empty,
                        null
                ).Deserialize( input, out result );
            if ( !error.IsSuccess )
            {
                throw error.ToException();
            }

            return result;
        }