/// <summary> /// Called when [read data]. /// </summary> /// <param name="buffer">The buffer.</param> /// <param name="offset">The offset.</param> /// <param name="count">The count.</param> protected virtual int OnReadData ( byte[] buffer, int offset, int count) { ArgumentUtility.NotNull ( buffer, "buffer"); ArgumentUtility.Nonnegative ( offset, "offset"); ArgumentUtility.Nonnegative ( count, "count"); bool cancel = false; DataTransferEventHandler handler = ReadData; if (handler != null) { DataTransferEventArgs ea = new DataTransferEventArgs ( this, buffer, offset, count); handler ( this, ea); cancel = ea.Cancel; buffer = ea.Buffer; offset = ea.Offset; count = ea.Count; if (cancel) { return(ea.Transferred); } } return(InnerStream.Read ( buffer, offset, count)); }
/// <summary> /// Called when [write data]. /// </summary> /// <param name="buffer">The buffer.</param> /// <param name="offset">The offset.</param> /// <param name="count">The count.</param> protected virtual void OnWriteData ( byte[] buffer, int offset, int count) { ArgumentUtility.NotNull ( buffer, "buffer"); ArgumentUtility.Nonnegative ( offset, "offset"); ArgumentUtility.Nonnegative ( count, "count"); bool cancel = false; DataTransferEventHandler handler = WriteData; if (handler != null) { DataTransferEventArgs ea = new DataTransferEventArgs ( this, buffer, offset, count); handler ( this, ea); cancel = ea.Cancel; buffer = ea.Buffer; offset = ea.Offset; count = ea.Count; } if (!cancel) { InnerStream.Write ( buffer, offset, count); } }