public virtual int RequiredBytes( FrameContent frameContent, bool desynchronization, Reader.UnsyncMode unsyncMode) { if (unsyncMode == Reader.UnsyncMode.CountIncludesUnsyncBytes) { using (Writer writer = new Writer()) { writer.Unsynchronization = desynchronization; using (WriterStream stream = new WriterStream(writer)) { frameContent.Codec.Write(stream, frameContent); } writer.Flush(); return((int)writer.Length); } } else if (unsyncMode == Reader.UnsyncMode.CountExcludesUnsyncBytes) { using (MemoryStream stream = new MemoryStream()) { frameContent.Codec.Write(stream, frameContent); return((int)stream.Length); } } else { throw new NotSupportedException("Unknown unsync mode"); } }
public ReaderStream( Reader _reader, int _length, Reader.UnsyncMode unsyncMode) { if (_reader.Length - _reader.Position < _length) { throw new Exception("Can't setup reader of size " + _length + " on reader with " + (_reader.Length - _reader.Position) + " bytes left"); } reader = _reader; length = _length; originalReaderPosition = _reader.Position; UnsyncMode = unsyncMode; }