OpenTTCN/Knowledge base/Creating Adapters with Adapter Framework/SeparatorChunkingMode.cs

From OpenTTCN

Jump to: navigation, search

  OpenTTCN DocZone

  Home | Developer's corner | Knowledge base | Working documents | Documentation | OpenTTCN IDE | Tutorials | Training | How do I | Frequently asked questions | Technical support


SeparatorChunkingMode.cs


Back to main article >>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace OpenTTCN.Sdk.ChunkingModes
{
    public class SeparatorChunkingMode : BufferingChunkingMode
    {
        private byte[] _separator;

        public SeparatorChunkingMode(byte[] separator)
            : base()
        {
            _separator = new byte[separator.Length];
            Array.Copy(separator, _separator, _separator.Length);
        }

        protected override long findMessageEnd(byte[] buffer, long offset, long length)
        {
            long index = -1;
            for (long i = offset;
                i < length - (_separator.Length - 1); i++)
            {
                bool matches = true;
                for (int j = 0; j < _separator.Length; j++)
                {
                    if (buffer[i + j] != _separator[j])
                    {
                        matches = false;
                        break;
                    }
                }
                if (matches)
                {
                    index = i + _separator.Length;
                    break;
                }
            }
            return index;
        }

        public override ChunkingMode copy()
        {
            return new SeparatorChunkingMode(_separator);
        }
    }
}
Views
Personal tools