public DiskIoReadState Init(Stream stream, byte[] buffer, int bufferOffset, long streamOffset, long length, DiskIoReadCallback callback, object state) { Stream = stream; BufferOffset = bufferOffset; StreamOffset = streamOffset; Length = length; Callback = callback; State = state; Buffer = buffer; return(this); }
public static void QueueRead(Stream stream, byte[] buffer, int bufferOffset, long streamOffset, long length, DiskIoReadCallback callback, object state) { while (ReadQueue.Count > MaxPendingOps) { Thread.Sleep(10); } var readData = ReadCache.Get().Init(stream, buffer, bufferOffset, streamOffset, length, callback, state); ReadQueue.Enqueue(readData); if (ReadQueue.Count > MinPendingOps) { IoHandle.Set(); } }