コード例 #1
0
        public static long WriteTo(Stream orignStream, Stream destStream, long totalSize, int bufferSize, ObsCallback callback)
        {
            DateTime reqTime = DateTime.Now;

            byte[] buffer = new byte[bufferSize];

            long alreadyRead = 0;

            while (alreadyRead < totalSize)
            {
                int readSize = orignStream.Read(buffer, 0, bufferSize);
                if (readSize <= 0)
                {
                    break;
                }

                if (alreadyRead + readSize > totalSize)
                {
                    readSize = (int)(totalSize - alreadyRead);
                }
                alreadyRead += readSize;
                destStream.Write(buffer, 0, readSize);
                callback?.Invoke();
            }
            destStream.Flush();

            if (LoggerMgr.IsInfoEnabled)
            {
                LoggerMgr.Info(string.Format("Write http request stream end, cost {0} ms", (DateTime.Now.Ticks - reqTime.Ticks) / 10000));
            }

            return(alreadyRead);
        }
コード例 #2
0
        public static void WriteTo(Stream src, Stream dest, int bufferSize, ObsCallback callback)
        {
            DateTime reqTime = DateTime.Now;

            byte[] buffer = new byte[bufferSize];
            int    bytesRead;

            while ((bytesRead = src.Read(buffer, 0, buffer.Length)) > 0)
            {
                dest.Write(buffer, 0, bytesRead);
                callback?.Invoke();
            }
            dest.Flush();
            if (LoggerMgr.IsInfoEnabled)
            {
                LoggerMgr.Info(string.Format("Write http request stream end, cost {0} ms", (DateTime.Now.Ticks - reqTime.Ticks) / 10000));
            }
        }