/// <summary> /// Closes the text writer. /// </summary> internal void CloseWriter() { Debug.Assert(this.rawValueWriter != null, "The text writer has not been initialized yet."); this.rawValueWriter.Dispose(); this.rawValueWriter = null; }
protected override void Dispose(bool disposing) { try { if (this.messageOutputStream != null) { if (this.rawValueWriter != null) { this.rawValueWriter.Flush(); } // In the async case the underlying stream is the async buffered stream, so we have to flush that explicitly. if (this.asynchronousOutputStream != null) { this.asynchronousOutputStream.FlushSync(); this.asynchronousOutputStream.Dispose(); } // Dispose the message stream (note that we OWN this stream, so we always dispose it). this.messageOutputStream.Dispose(); } } finally { this.messageOutputStream = null; this.asynchronousOutputStream = null; this.outputStream = null; this.rawValueWriter = null; } base.Dispose(disposing); }
/// <summary> /// Initialized a new text writer over the message payload stream. /// </summary> /// <remarks>This can only be called if the text writer was not yet initialized or it has been closed. /// It can be called several times with CloseWriter calls in between though.</remarks> internal void InitializeRawValueWriter() { Debug.Assert(this.rawValueWriter == null, "The rawValueWriter has already been initialized."); this.rawValueWriter = new RawValueWriter(this.MessageWriterSettings, this.outputStream, this.encoding); }