public BufferDescriptor TryReadBuffer(BufferDescriptor bufferDescriptor, EventListener listener) { if (bufferDescriptor != null) Reader.Position = bufferDescriptor.FilePosition; return BufferDescriptor.Read (Header, Reader, listener); }
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; } }
public IEnumerable<BufferDescriptor> ReadBuffer(EventListener listener) { do { var buffer = TryReadBuffer (null, listener); if (buffer != null) { yield return buffer; } else { if (Exited && Reader.IsEof) break; Thread.Sleep (5); } } while (!token.IsCancellationRequested); Reader.Close (); }