#region Apache License // // Licensed to the Apache Software Foundation (ASF) under one or more // contributor license agreements. See the NOTICE file distributed with // this work for additional information regarding copyright ownership. // The ASF licenses this file to you under the Apache License, Version 2.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.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // #endregion using System; using System.Text; using System.IO; namespace log4net.Util { /// /// A that can be and reused /// /// /// /// A that can be and reused. /// This uses a single buffer for string operations. /// /// /// Nicko Cadell public class ReusableStringWriter : StringWriter { #region Constructor /// /// Create an instance of /// /// the format provider to use /// /// /// Create an instance of /// /// public ReusableStringWriter(IFormatProvider formatProvider) : base(formatProvider) { } #endregion /// /// Override Dispose to prevent closing of writer /// /// flag /// /// /// Override Dispose to prevent closing of writer /// /// protected override void Dispose(bool disposing) { // Do not close the writer } /// /// Reset this string writer so that it can be reused. /// /// the maximum buffer capacity before it is trimmed /// the default size to make the buffer /// /// /// Reset this string writer so that it can be reused. /// The internal buffers are cleared and reset. /// /// public void Reset(int maxCapacity, int defaultSize) { // Reset working string buffer StringBuilder sb = this.GetStringBuilder(); sb.Length = 0; // Check if over max size if (sb.Capacity > maxCapacity) { sb.Capacity = defaultSize; } } } }