示例#1
0
        private static async Task Send(IInteract context, BufferBlock <ResponseMessageModel> messages, CancellationToken token)
        {
            while (await messages.OutputAvailableAsync(token))
            {
                using (var stream = _streamFactory.Create())
                {
                    var message = await messages.ReceiveAsync(token);

                    ProtoBuf.Serializer.Serialize(stream, message);
                    await context.Send(stream, token);
                }
            }
        }
示例#2
0
        public async Task SendAsync(ChunkedStream message, CancellationToken token)
        {
            var connect = _connect.Result;

loop:
            try
            {
                if (!connect.IsCompleted)
                {
                    await connect;
                }
                await _interact.Send(message, token);
            }
            catch (TaskCanceledException) { throw; }
            catch
            {
                connect = await Reconnect(token);

                goto loop;
            }
        }