protected SegmenterBase( OnSegmentReceived onSegmentReceived, SegmentionOptions options ) { OnSegmentReceived = onSegmentReceived; Options = options; }
public StartAndFixLengthSegmenter( OnSegmentReceived onSegmentReceived, byte start, long fixedLength, SegmentionOptions options, SegmentExtensionDefinition?extensionDefinition = null) : base(onSegmentReceived, options) { Start = start; FixedLength = fixedLength; ExtensionDefinition = extensionDefinition; }
internal BetweenSegmenter( OnSegmentReceived onSegmentReceived, byte[] starts, byte end, long?maxLength, SegmentionOptions options ) : base(onSegmentReceived, options) { Starts = starts; End = end; MaxLength = maxLength; }
public BetweenSegmenter( OnSegmentReceived onSegmentReceived, byte start, byte end, long?maxLength, SegmentionOptions options ) : base(onSegmentReceived, options) { Start = start; End = end; MaxLength = maxLength; }
public static ISegmenter ThenDo(this ISegmentBuildDefinition builder, OnSegmentReceived onSegmentReceived) { if (!(builder is SegmentBuildDefinition def)) { throw new NotSupportedException($"{builder.GetType()} is not supported"); } ISegmenter?built = def.EndsWith.HasValue ? (ISegmenter) new BetweenSegmenter(onSegmentReceived, def.StartsWith, def.EndsWith.Value, def.MaxLength, def.Options) : def.Length.HasValue ? new StartAndFixLengthSegmenter(onSegmentReceived, def.StartsWith, def.Length.Value, def.Options, def.ExtensionDefinition) : null; if (built == null) { throw new NotSupportedException("Unable to Build Segmenter"); } return(built); }
public ISegmenter GetSegmenter(OnSegmentReceived received) => Segment.StartsWith(0x7a) .AndIsLength(12) .ExtendedWithLengthAt <ushort>(4, Endianness.Little) .WithOptions(SegmentionOptions.SkipInvalidSegment) .ThenDo(received);
public ISegmenter GetSegmenter(OnSegmentReceived thenDo) => Segment.StartsWith(Bytes._S).AndEndsWith(Bytes.Lf).ThenDo(thenDo);
public static ISegmenter ThenDo(this ISegmentBuildDefinition builder, OnSegmentReceived onSegmentReceived) => builder switch {
//Task OnSegmentReceived(ReadOnlySequence<byte> segment) public ISegmenter GetSegmenter(MachineType machine, OnSegmentReceived received) => (machine == MachineType.Favero ? Segment.StartsWith(0xff).AndIsLength(10) : Segment.StartsWith(ControlCharacters.StartOfHeading).AndEndsWith(ControlCharacters.EndOfTransmission).WithMaxLength(100) ).WithOptions(SegmentionOptions.SkipInvalidSegment | SegmentionOptions.SecondStartInvalid).ThenDo(received);