public void StatsBufferize() { var handler = new BufferBuilderHandlerMock(); var bufferBuilder = new BufferBuilder(handler, 30, "\n"); var serializers = new Serializers { EventSerializer = new EventSerializer(new SerializerHelper(null)), }; var statsRouter = new StatsRouter(serializers, bufferBuilder, null); using (var statsBufferize = new StatsBufferize(statsRouter, 10, null, TimeSpan.Zero)) { var pool = new Pool <Stats>(p => new Stats(p), 1); var stats = new Stats(pool) { Kind = StatsKind.Event }; stats.Event.Text = "test"; stats.Event.Title = "title"; statsBufferize.Send(stats); while (handler.Buffer == null) { Task.Delay(TimeSpan.FromMilliseconds(1)).Wait(); } // Sent because buffer is full. Assert.AreEqual("_e{5,4}:title|test", Encoding.UTF8.GetString(handler.Buffer)); } }
public StatsBufferize CreateStatsBufferize( StatsRouter statsRouter, int workerMaxItemCount, TimeSpan?blockingQueueTimeout, TimeSpan maxIdleWaitBeforeSending) { return(new StatsBufferize( statsRouter, workerMaxItemCount, blockingQueueTimeout, maxIdleWaitBeforeSending)); }
public StatsBufferize( StatsRouter statsRouter, int workerMaxItemCount, TimeSpan?blockingQueueTimeout, TimeSpan maxIdleWaitBeforeSending) { var handler = new WorkerHandler(statsRouter, maxIdleWaitBeforeSending); // `handler` (and also `statsRouter`) do not need to be thread safe as long as `workerThreadCount` is 1. this._worker = new AsynchronousWorker <Stats>( handler, new Waiter(), workerThreadCount: 1, workerMaxItemCount, blockingQueueTimeout); }
public WorkerHandler(StatsRouter statsRouter, TimeSpan maxIdleWaitBeforeSending) { _statsRouter = statsRouter; _maxIdleWaitBeforeSending = maxIdleWaitBeforeSending; }