Example #1
0
        public async Task <IPositionedMessagesParser> CreateParser(CreateParserParams parserParams)
        {
            parserParams.EnsureRangeIsSet(this);

            var strategiesCache = new StreamParser.StrategiesCache()
            {
                MultiThreadedStrategy  = multiThreadedStrategy,
                SingleThreadedStrategy = singleThreadedStrategy
            };

            DejitteringParams?dejitteringParams = GetDejitteringParams();

            if (dejitteringParams != null && (parserParams.Flags & MessagesParserFlag.DisableDejitter) == 0)
            {
                return(await DejitteringMessagesParser.Create(
                           async underlyingParserParams => await StreamParser.Create(
                               this,
                               EnsureParserRangeDoesNotExceedReadersBoundaries(underlyingParserParams),
                               textStreamPositioningParams,
                               settingsAccessor,
                               strategiesCache
                               ),
                           parserParams,
                           dejitteringParams.Value
                           ));
            }
            return(await StreamParser.Create(
                       this,
                       parserParams,
                       textStreamPositioningParams,
                       settingsAccessor,
                       strategiesCache
                       ));
        }
Example #2
0
        public static async Task <DejitteringMessagesParser> Create(Func <CreateParserParams, Task <IPositionedMessagesParser> > underlyingParserFactory,
                                                                    CreateParserParams originalParams, int jitterBufferSize)
        {
            if (underlyingParserFactory == null)
            {
                throw new ArgumentNullException("underlyingParserFactory");
            }

            var parser = new DejitteringMessagesParser(originalParams, jitterBufferSize);

            try
            {
                await parser.CreateUnderlyingParserAndInitJitterBuffer(underlyingParserFactory);
            }
            catch
            {
                await parser.Dispose();

                throw;
            }
            return(parser);
        }