Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Services / Web / System / Web / Services / Protocols / BufferedResponseStream.cs / 1305376 / BufferedResponseStream.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.Services.Protocols { using System; using System.IO; using System.Web.Services; internal class BufferedResponseStream : Stream { Stream outputStream; byte[] buffer; int position; bool flushEnabled = true; internal BufferedResponseStream(Stream outputStream, int buffersize) { buffer = new byte[buffersize]; this.outputStream = outputStream; } public override bool CanRead { get { return false; } } public override bool CanSeek { get { return false; } } public override bool CanWrite { get { return true; } } public override long Length { get { throw new NotSupportedException(Res.GetString(Res.StreamDoesNotSeek)); } } public override long Position { get { throw new NotSupportedException(Res.GetString(Res.StreamDoesNotSeek)); } set { throw new NotSupportedException(Res.GetString(Res.StreamDoesNotSeek)); } } protected override void Dispose(bool disposing) { try { if (disposing) outputStream.Close(); } finally { base.Dispose(disposing); } } internal bool FlushEnabled { set { flushEnabled = value; } } public override void Flush() { if (!flushEnabled) return; FlushWrite(); } public override IAsyncResult BeginRead(byte[] buffer, int offset, int count, AsyncCallback callback, Object state) { throw new NotSupportedException(Res.GetString(Res.StreamDoesNotRead)); } public override int EndRead(IAsyncResult asyncResult) { throw new NotSupportedException(Res.GetString(Res.StreamDoesNotRead)); } public override long Seek(long offset, SeekOrigin origin) { throw new NotSupportedException(Res.GetString(Res.StreamDoesNotSeek)); } public override void SetLength(long value) { throw new NotSupportedException(Res.GetString(Res.StreamDoesNotSeek)); } public override int Read(byte[] buffer, int offset, int count) { throw new NotSupportedException(Res.GetString(Res.StreamDoesNotRead)); } public override int ReadByte() { throw new NotSupportedException(Res.GetString(Res.StreamDoesNotRead)); } public override void Write(byte[] array, int offset, int count) { if (position > 0) { int numBytes = buffer.Length - position; // space left in buffer if (numBytes > 0) { if (numBytes > count) numBytes = count; Array.Copy(array, offset, buffer, position, numBytes); position += numBytes; if (count == numBytes) return; offset += numBytes; count -= numBytes; } FlushWrite(); } // Skip buffer if we have more bytes then will fit in the buffer. if (count >= buffer.Length) { outputStream.Write(array, offset, count); return; } // Copy remaining bytes into buffer, to write at a later date. Array.Copy(array, offset, buffer, position, count); position = count; } private void FlushWrite() { if (position > 0) { outputStream.Write(buffer, 0, position); position = 0; } outputStream.Flush(); } public override void WriteByte(byte value) { if (position == buffer.Length) FlushWrite(); buffer[position++] = value; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- InputDevice.cs
- DateTimeValueSerializerContext.cs
- QuotedPrintableStream.cs
- PersistenceContextEnlistment.cs
- DetailsViewModeEventArgs.cs
- AxisAngleRotation3D.cs
- Label.cs
- BitmapEffectGroup.cs
- TabletDeviceInfo.cs
- BinaryMethodMessage.cs
- FormsAuthenticationConfiguration.cs
- ItemPager.cs
- DiagnosticEventProvider.cs
- FontFamilyConverter.cs
- SystemColors.cs
- GuidelineCollection.cs
- TerminatorSinks.cs
- XmlTextReaderImpl.cs
- DashStyles.cs
- ValueQuery.cs
- SmtpAuthenticationManager.cs
- AutomationPeer.cs
- RelationshipManager.cs
- PresentationTraceSources.cs
- OutputCacheProfileCollection.cs
- ImageList.cs
- DataGridViewCell.cs
- XmlParserContext.cs
- MasterPageParser.cs
- DbParameterCollection.cs
- SessionPageStatePersister.cs
- XmlIgnoreAttribute.cs
- ClientUIRequest.cs
- XmlSchemaType.cs
- TypeHelpers.cs
- AssociationSetMetadata.cs
- VarRefManager.cs
- Token.cs
- MouseWheelEventArgs.cs
- TemplateXamlParser.cs
- CalendarTable.cs
- HashLookup.cs
- MonikerProxyAttribute.cs
- WindowsPen.cs
- AttributeCollection.cs
- Rights.cs
- BinaryHeap.cs
- XPathDocumentNavigator.cs
- ProjectionCamera.cs
- WorkflowMarkupSerializationProvider.cs
- StreamHelper.cs
- WindowsSysHeader.cs
- InitializationEventAttribute.cs
- AtomicFile.cs
- ErrorTableItemStyle.cs
- Win32SafeHandles.cs
- DependencyPropertyConverter.cs
- TextElementCollectionHelper.cs
- EntityStoreSchemaFilterEntry.cs
- HitTestResult.cs
- TargetInvocationException.cs
- SplitContainer.cs
- ZipFileInfoCollection.cs
- CodeDomConfigurationHandler.cs
- PrtCap_Reader.cs
- SecurityKeyUsage.cs
- CompiledQuery.cs
- ByteStreamGeometryContext.cs
- SystemUdpStatistics.cs
- SchemaSetCompiler.cs
- DrawingContextDrawingContextWalker.cs
- FixedNode.cs
- CodeAttributeDeclarationCollection.cs
- DataProtection.cs
- FormViewDeleteEventArgs.cs
- BufferedReceiveManager.cs
- PropertyPushdownHelper.cs
- ControlBuilder.cs
- IItemContainerGenerator.cs
- CommandCollectionEditor.cs
- NetworkStream.cs
- ContentTextAutomationPeer.cs
- SiteMapNode.cs
- PropertyEmitter.cs
- VisualBasicHelper.cs
- EntityDataSourceWrapper.cs
- SourceLineInfo.cs
- SQLDecimal.cs
- Trigger.cs
- ListControlConvertEventArgs.cs
- KeyedQueue.cs
- AmbiguousMatchException.cs
- ToolStripDropDownItem.cs
- ProfileManager.cs
- TileBrush.cs
- EventLevel.cs
- PrintDialog.cs
- Bitmap.cs
- XmlNavigatorStack.cs
- ProtocolsConfigurationEntry.cs