Beispiel #1
0
        // STREAM流,建立连接通信
        public BaseStream CreateStream(Head create, StreamType st)
        {
            BaseStream stream;

            switch (st)
            {
            case StreamType.Call_RW:
                stream = new CallRWStream();
                break;

            case StreamType.Send_W:
                stream = new SendWStream();
                break;

            case StreamType.Stream_RW:
                stream = new StreamReadWrightStream();
                break;

            case StreamType.Stream_R:
                stream = new StreamReadStream();
                break;

            case StreamType.Stream_W:
                stream = new StreamWrightStream();
                break;

            default:
                stream = new OldPLStream();
                break;
            }
            Streams.Add(stream.StreamId, stream);
            stream.StreamCreate(create, this);

            return(stream);
        }
Beispiel #2
0
        // 有返回值RPC CALL
        public async Task <IMessage> CallAsync(Head request)
        {
            CallRWStream stream = new CallRWStream();

            Streams.Add(stream.StreamId, stream);

            return(await stream.StreamWrightAsync(request, this));
        }
Beispiel #3
0
        // 有返回值RPC CALL,可以取消
        public async Task <IMessage> CallAsync(Head request, CancellationToken cancellationToken)
        {
            CallRWStream stream = new CallRWStream();

            Streams.Add(stream.StreamId, stream);

            cancellationToken.Register(() => this.Streams.Remove(stream.StreamId));
            Send(request);

            return(await stream.StreamWrightAsync(request, this));
        }