internal static unsafe BufferHeader Read(CachedBinaryReader reader) { if (!reader.LoadData (BufferSize)) return null; fixed (byte* buffer = reader.buffer) { reader.SetBufferPointer (buffer); return new BufferHeader (reader); } }
internal static unsafe BufferDescriptor Read(LogHeader logHeader, CachedBinaryReader reader, EventListener listener) { var pos = reader.Position; var header = BufferHeader.Read (reader); if (header == null) return null; if (!reader.LoadData (header.Length)) { reader.Position = pos; return null; } fixed (byte* buffer = reader.buffer) { // FIXME: unset the buffer pointer after this block! reader.SetBufferPointer (buffer); var result = new BufferDescriptor (pos, header); try { listener.ReadBufferEvents (logHeader, result, reader); } catch (Exception e) { Console.WriteLine ("error while reading event !"); Console.WriteLine (e); } return result; } }