Esempio n. 1
0
 protected SegmenterBase(
     OnSegmentReceived onSegmentReceived,
     SegmentionOptions options
     )
 {
     OnSegmentReceived = onSegmentReceived;
     Options           = options;
 }
Esempio n. 2
0
 public StartAndFixLengthSegmenter(
     OnSegmentReceived onSegmentReceived,
     byte start,
     long fixedLength,
     SegmentionOptions options,
     SegmentExtensionDefinition?extensionDefinition = null)
     : base(onSegmentReceived, options)
 {
     Start               = start;
     FixedLength         = fixedLength;
     ExtensionDefinition = extensionDefinition;
 }
Esempio n. 3
0
 internal BetweenSegmenter(
     OnSegmentReceived onSegmentReceived,
     byte[] starts,
     byte end,
     long?maxLength,
     SegmentionOptions options
     )
     : base(onSegmentReceived, options)
 {
     Starts    = starts;
     End       = end;
     MaxLength = maxLength;
 }
Esempio n. 4
0
 public BetweenSegmenter(
     OnSegmentReceived onSegmentReceived,
     byte start,
     byte end,
     long?maxLength,
     SegmentionOptions options
     )
     : base(onSegmentReceived, options)
 {
     Start     = start;
     End       = end;
     MaxLength = maxLength;
 }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
 public ISegmenter GetSegmenter(OnSegmentReceived received) =>
 Segment.StartsWith(0x7a)
 .AndIsLength(12)
 .ExtendedWithLengthAt <ushort>(4, Endianness.Little)
 .WithOptions(SegmentionOptions.SkipInvalidSegment)
 .ThenDo(received);
Esempio n. 7
0
 public ISegmenter GetSegmenter(OnSegmentReceived thenDo) => Segment.StartsWith(Bytes._S).AndEndsWith(Bytes.Lf).ThenDo(thenDo);
Esempio n. 8
0
 public static ISegmenter ThenDo(this ISegmentBuildDefinition builder, OnSegmentReceived onSegmentReceived) =>
 builder switch
 {
Esempio n. 9
0
 //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);