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
- DomNameTable.cs
- RelationshipDetailsRow.cs
- ChtmlSelectionListAdapter.cs
- BamlLocalizerErrorNotifyEventArgs.cs
- NamedPipeDuplicateContext.cs
- ClientUtils.cs
- NCryptNative.cs
- Exceptions.cs
- TwoPhaseCommit.cs
- X500Name.cs
- RelationshipSet.cs
- IndexOutOfRangeException.cs
- SqlCacheDependencyDatabase.cs
- ObjectManager.cs
- XamlFigureLengthSerializer.cs
- CheckBox.cs
- XmlDocumentFieldSchema.cs
- XsltCompileContext.cs
- IPEndPoint.cs
- MailMessageEventArgs.cs
- BamlTreeNode.cs
- TypedReference.cs
- RegexStringValidatorAttribute.cs
- GregorianCalendar.cs
- StoreItemCollection.cs
- UrlAuthorizationModule.cs
- TrackingQueryElement.cs
- WebEventCodes.cs
- WebConfigurationManager.cs
- ServiceModelInstallComponent.cs
- StickyNoteAnnotations.cs
- RouteData.cs
- HtmlTable.cs
- streamingZipPartStream.cs
- ElementHostPropertyMap.cs
- EncryptedKey.cs
- SafeLibraryHandle.cs
- DataSourceXmlClassAttribute.cs
- ControlPaint.cs
- SmiGettersStream.cs
- WebPartTransformerCollection.cs
- DbProviderServices.cs
- MulticastDelegate.cs
- SqlVersion.cs
- GraphicsContainer.cs
- ResourceDisplayNameAttribute.cs
- XmlHelper.cs
- RoutedEventHandlerInfo.cs
- JsonQueryStringConverter.cs
- Margins.cs
- TaskHelper.cs
- IOException.cs
- StyleCollectionEditor.cs
- XamlSerializationHelper.cs
- BypassElementCollection.cs
- XamlGridLengthSerializer.cs
- StaticResourceExtension.cs
- ZipQueryOperator.cs
- XmlObjectSerializerReadContext.cs
- XamlToRtfParser.cs
- PromptBuilder.cs
- RegexReplacement.cs
- OrderingQueryOperator.cs
- DataContractJsonSerializerOperationFormatter.cs
- CreationContext.cs
- XmlSchemaComplexContentRestriction.cs
- mda.cs
- LinqDataSourceView.cs
- RpcCryptoRequest.cs
- TreeView.cs
- MDIWindowDialog.cs
- DisplayClaim.cs
- DataBoundControlAdapter.cs
- ConsoleTraceListener.cs
- TableCell.cs
- ProfileSection.cs
- UIAgentInitializationException.cs
- FormViewCommandEventArgs.cs
- TextPenaltyModule.cs
- DetailsViewRow.cs
- InheritanceRules.cs
- DiscoveryServerProtocol.cs
- IIS7UserPrincipal.cs
- WindowsStartMenu.cs
- CommandField.cs
- PageContentCollection.cs
- XmlWriterSettings.cs
- TextOptionsInternal.cs
- Separator.cs
- ThreadPoolTaskScheduler.cs
- GridViewRowEventArgs.cs
- XsdValidatingReader.cs
- CheckBox.cs
- PhoneCall.cs
- CompiledWorkflowDefinitionContext.cs
- ResourceExpression.cs
- AuthenticationModuleElement.cs
- TaiwanCalendar.cs
- Misc.cs
- ProbeMatchesCD1.cs