public SnapshotsEncoder Next()
            {
                if (_index + 1 >= _count)
                {
                    throw new IndexOutOfRangeException();
                }

                _offset = _parentMessage.Limit();
                _parentMessage.Limit(_offset + SbeBlockLength());
                ++_index;

                return(this);
            }
            public void Wrap(
                BackupResponseEncoder parentMessage, IMutableDirectBuffer buffer, int count)
            {
                if (count < 0 || count > 65534)
                {
                    throw new ArgumentException("count outside allowed range: count=" + count);
                }

                this._parentMessage = parentMessage;
                this._buffer        = buffer;
                _dimensions.Wrap(buffer, parentMessage.Limit());
                _dimensions.BlockLength((ushort)44);
                _dimensions.NumInGroup((ushort)count);
                _index      = -1;
                this._count = count;
                parentMessage.Limit(parentMessage.Limit() + HEADER_SIZE);
            }
        public BackupResponseEncoder PutClusterMembers(IDirectBuffer src, int srcOffset, int length)
        {
            if (length > 1073741824)
            {
                throw new InvalidOperationException("length > maxValue for type: " + length);
            }

            int headerLength = 4;
            int limit        = _parentMessage.Limit();

            _parentMessage.Limit(limit + headerLength + length);
            _buffer.PutInt(limit, unchecked ((int)length), ByteOrder.LittleEndian);
            _buffer.PutBytes(limit + headerLength, src, srcOffset, length);

            return(this);
        }