示例#1
0
        public StreamBinaryEventsWriter([NotNull] StreamBinaryEventsWriterSettings settings, [CanBeNull] ILog log)
        {
            this.settings = settings ?? throw new ArgumentNullException(nameof(settings));
            this.log      = log = (log ?? LogProvider.Get()).ForContext <StreamBinaryEventsWriter>();

            buffer = new BinaryBufferWriter(0)
            {
                Endianness = Endianness.Big
            };
            buffer.Write(0);
        }
示例#2
0
        public StreamBinaryEventsWriter(StreamBinaryEventsWriterSettings settings, ILog log)
        {
            this.settings = settings ?? throw new ArgumentNullException(nameof(settings));
            this.log      = (log ?? LogProvider.Get()).ForContext <StreamBinaryEventsWriter>();

            iterationMetric = settings.MetricContext.CreateSummary("iteration", "type", new SummaryConfig {
                Quantiles = new[] { 0.5, 0.75, 1 }
            });

            emptyWriters = Channel.CreateUnbounded <Writer>(new UnboundedChannelOptions
            {
                SingleReader = true,
                SingleWriter = false,
                AllowSynchronousContinuations = false
            });

            for (var i = 0; i < settings.WritersPoolCapacity; i++)
            {
                emptyWriters.Writer.WriteAsync(new Writer(settings.WriterCapacity.Bytes)).AsTask().GetAwaiter().GetResult();
            }
        }