//****************************************************************************************************** // StreamExtensions.cs - Gbtc // // Copyright © 2012, Grid Protection Alliance. All Rights Reserved. // // Licensed to the Grid Protection Alliance (GPA) under one or more contributor license agreements. See // the NOTICE file distributed with this work for additional information regarding copyright ownership. // The GPA licenses this file to you under the Eclipse Public License -v 1.0 (the "License"); you may // not use this file except in compliance with the License. You may obtain a copy of the License at: // // http://www.opensource.org/licenses/eclipse-1.0.php // // Unless agreed to in writing, the subject software distributed under the License is distributed on an // "AS-IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. Refer to the // License for the specific language governing permissions and limitations. // // Code Modification History: // ---------------------------------------------------------------------------------------------------- // 09/19/2008 - J. Ritchie Carroll // Generated original version of source code. // 10/24/2008 - Pinal C. Patel // Edited code comments. // 09/14/2009 - Stephen C. Wills // Added new header and license agreement. // 11/23/2011 - J. Ritchie Carroll // Modified copy stream to use buffer pool. // 12/14/2012 - Starlynn Danyelle Gilliam // Modified Header. // //****************************************************************************************************** using System.IO; namespace GSF.IO { /// /// Defines extension functions related to manipulation. /// public static class StreamExtensions { private const int BufferSize = 32768; /// /// Copies input onto output . /// /// The input . /// The output . public static void CopyStream(this Stream source, Stream destination) { byte[] buffer = BufferPool.TakeBuffer(BufferSize); try { int bytesRead = source.Read(buffer, 0, BufferSize); while (bytesRead > 0) { destination.Write(buffer, 0, bytesRead); bytesRead = source.Read(buffer, 0, BufferSize); } } finally { if (buffer != null) BufferPool.ReturnBuffer(buffer); } } /// /// Reads entire contents, and returns array of data. /// /// The to be converted to array. /// An array of . public static byte[] ReadStream(this Stream source) { MemoryStream outStream = new MemoryStream(); source.CopyStream(outStream); return outStream.ToArray(); } } }