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));
            }
        }
Beispiel #2
0
 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;
 }