public GetBufferAsyncResult(int count, XmlStreamNodeWriter writer, AsyncCallback callback, object state) : base(callback, state) { this.count = count; this.writer = writer; int bufferOffset = writer.offset; bool completeSelf = false; if (bufferOffset + count <= bufferLength) { this.offset = bufferOffset; completeSelf = true; } else { IAsyncResult result = writer.BeginFlushBuffer(PrepareAsyncCompletion(onComplete), this); completeSelf = SyncContinue(result); } if (completeSelf) { this.Complete(true); } }
bool HandleFlushBuffer(IAsyncResult result) { if (result == null) { result = writer.BeginFlushBuffer(PrepareAsyncCompletion(onHandleFlushBufferComplete), this); if (!result.CompletedSynchronously) { return(false); } } writer.EndFlushBuffer(result); return(HandleWrite(null)); }