コード例 #1
0
        /// <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));
        }
コード例 #2
0
        /// <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);
            }
        }