Пример #1
0
        async Task Write()
        {
            foreach (var frame in queue.GetConsumingEnumerable())
            {
                if (frame == null)
                {
                    Log.Info("Null frame dequeued");
                    continue;
                }

                Log.Debug("-> {0}", frame);

                var data = frame.ToBytes().ToArray();

                await lockWrite.WaitAsync().ConfigureAwait(false);

                try {
                    await clientStream.WriteAsync(data, 0, data.Length).ConfigureAwait(false);

                    await clientStream.FlushAsync().ConfigureAwait(false);

                    var stream = await streamManager.Get(frame.StreamIdentifier).ConfigureAwait(false);

                    stream.ProcessSentFrame(frame);
                } catch (Exception ex) {
                    Log.Warn("Error writing frame: {0}, {1}", frame.StreamIdentifier, ex);
                } finally {
                    lockWrite.Release();
                }
            }
        }
        void write()
        {
            foreach (var frame in queue.GetConsumingEnumerable())
            {
                if (frame == null)
                {
                    Log.Info("Null frame dequeued");
                    continue;
                }

                Log.Debug("-> {0}", frame);

                var data = AltLinq.ToArray(frame.ToBytes());

                lockWrite.WaitOne();

                try {
                    clientStream.Write(data, 0, data.Length);
                    clientStream.Flush();
                    var stream = streamManager.Get(frame.StreamIdentifier);
                    stream.ProcessSentFrame(frame);
                } catch (Exception ex) {
                    Log.Warn("Error writing frame: {0}, {1}", frame.StreamIdentifier, ex);
                } finally {
                    lockWrite.Release();
                }
            }
        }