Esempio n. 1
0
        public async Task <LightDocument> Process(ParseRequest request)
        {
            if (splitter == null)
            {
                log.LogInformation("Constructing NEW {0} splitter...", id);
                Interlocked.Exchange(ref current, 0);
                splitter = factory();
            }

            LightDocument result = await splitter.Process(request).ConfigureAwait(false);

            if (Interlocked.Increment(ref current) >= maxProcessing)
            {
                splitter.Dispose();
                splitter = null;
            }

            return(result);
        }
Esempio n. 2
0
 public void Dispose()
 {
     splitter?.Dispose();
 }