// 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); }
// 有返回值RPC CALL public async Task <IMessage> CallAsync(Head request) { CallRWStream stream = new CallRWStream(); Streams.Add(stream.StreamId, stream); return(await stream.StreamWrightAsync(request, this)); }
// 有返回值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)); }