Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx35 / System.ServiceModel.Web / System / ServiceModel / Channels / HttpStreamMessageEncoderFactory.cs / 1305376 / HttpStreamMessageEncoderFactory.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.ServiceModel.Channels { using System.Collections.Generic; using System.Collections.ObjectModel; using System.IO; using System.Net; using System.Xml; using System.Text; using System.ServiceModel.Dispatcher; class HttpStreamMessageEncoderFactory : MessageEncoderFactory { HttpStreamMessageEncoder encoder; public HttpStreamMessageEncoderFactory(XmlDictionaryReaderQuotas quotas) { this.encoder = new HttpStreamMessageEncoder(quotas); } public override MessageEncoder Encoder { get { return this.encoder; } } public override MessageVersion MessageVersion { get { return MessageVersion.None; } } public override MessageEncoder CreateSessionEncoder() { return this.encoder; } internal class HttpStreamMessageEncoder : MessageEncoder { string maxReceivedMessageSizeExceededResourceString; string maxSentMessageSizeExceededResourceString; XmlDictionaryReaderQuotas quotas; public HttpStreamMessageEncoder(XmlDictionaryReaderQuotas quotas) { this.quotas = quotas; this.maxSentMessageSizeExceededResourceString = SR2.MaxSentMessageSizeExceeded; this.maxReceivedMessageSizeExceededResourceString = SR2.MaxReceivedMessageSizeExceeded; } public override string ContentType { get { return null; } } public override string MediaType { get { return null; } } public override MessageVersion MessageVersion { get { return MessageVersion.None; } } public override bool IsContentTypeSupported(string contentType) { return true; } public override Message ReadMessage(ArraySegmentbuffer, BufferManager bufferManager, string contentType) { if (bufferManager == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("bufferManager"); } Message result; using (BufferManagerOutputStream stream = new BufferManagerOutputStream(maxReceivedMessageSizeExceededResourceString, 0, int.MaxValue, bufferManager)) { stream.Write(buffer.Array, 0, buffer.Count); result = ReadMessage(stream.ToMemoryStream(), int.MaxValue, contentType); bufferManager.ReturnBuffer(buffer.Array); return result; } } public override Message ReadMessage(Stream stream, int maxSizeOfHeaders, string contentType) { if (stream == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("stream"); } Message result = Message.CreateMessage(new HttpStreamXmlDictionaryReader(stream, this.quotas), maxSizeOfHeaders, MessageVersion.None); result.Properties.Encoder = this; return result; } public override void WriteMessage(Message message, Stream stream) { if (message == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("message"); } if (stream == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("stream"); } message.Properties.Encoder = this; using (HttpStreamXmlDictionaryWriter writer = new HttpStreamXmlDictionaryWriter(stream)) { message.WriteMessage(writer); writer.Flush(); } } public override ArraySegment WriteMessage(Message message, int maxMessageSize, BufferManager bufferManager, int messageOffset) { if (message == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("message"); } if (bufferManager == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("bufferManager"); } if (maxMessageSize < 0) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("maxMessageSize")); } using (BufferManagerOutputStream stream = new BufferManagerOutputStream(this.maxSentMessageSizeExceededResourceString, 0, maxMessageSize, bufferManager)) { stream.Skip(messageOffset); WriteMessage(message, stream); int size; byte[] buffer = stream.ToArray(out size); return new ArraySegment (buffer, 0, size - messageOffset); } } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
![Network programming in C#, Network Programming in VB.NET, Network Programming in .NET](/images/book.jpg)
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SqlExpander.cs
- NodeLabelEditEvent.cs
- WindowsFormsDesignerOptionService.cs
- SqlTrackingQuery.cs
- DbTransaction.cs
- DetailsViewModeEventArgs.cs
- SecurityKeyIdentifierClause.cs
- TableProviderWrapper.cs
- DefaultBindingPropertyAttribute.cs
- StringValueSerializer.cs
- GrammarBuilderBase.cs
- JumpList.cs
- KernelTypeValidation.cs
- SessionEndedEventArgs.cs
- DataGridViewSelectedColumnCollection.cs
- SqlConnectionManager.cs
- PingOptions.cs
- DrawingImage.cs
- XmlSchemas.cs
- SqlInternalConnectionSmi.cs
- CommonDialog.cs
- AspProxy.cs
- GacUtil.cs
- SemaphoreSecurity.cs
- FormParameter.cs
- Utils.cs
- TemplateControlBuildProvider.cs
- IndexExpression.cs
- XhtmlBasicSelectionListAdapter.cs
- SystemIPInterfaceProperties.cs
- ObjRef.cs
- PersonalizablePropertyEntry.cs
- DispatcherHooks.cs
- TypeSystem.cs
- WebPartDisplayModeEventArgs.cs
- PolyLineSegmentFigureLogic.cs
- OleDbConnectionInternal.cs
- FileChangesMonitor.cs
- Registry.cs
- XmlILIndex.cs
- COAUTHINFO.cs
- RecognizerStateChangedEventArgs.cs
- XmlTextReaderImpl.cs
- StructuralCache.cs
- SQLDateTime.cs
- ImageClickEventArgs.cs
- WmlCommandAdapter.cs
- SelectionRange.cs
- OracleMonthSpan.cs
- DoubleConverter.cs
- AsyncOperation.cs
- BuildProviderUtils.cs
- StructuredTypeEmitter.cs
- TextClipboardData.cs
- EndpointInfo.cs
- DragEvent.cs
- SocketInformation.cs
- ToggleButton.cs
- ThreadAbortException.cs
- TemplateParser.cs
- DataContractSet.cs
- DesignUtil.cs
- TargetParameterCountException.cs
- OracleMonthSpan.cs
- SafeNativeMethods.cs
- GrammarBuilder.cs
- GlobalAclOperationRequirement.cs
- HttpCapabilitiesBase.cs
- BaseAddressPrefixFilterElement.cs
- ResourceReferenceKeyNotFoundException.cs
- XmlText.cs
- WebBrowserSiteBase.cs
- ListBoxAutomationPeer.cs
- DataFieldConverter.cs
- DispatchWrapper.cs
- ImageField.cs
- XmlKeywords.cs
- RTLAwareMessageBox.cs
- QfeChecker.cs
- WindowsComboBox.cs
- ResourceAssociationTypeEnd.cs
- _AutoWebProxyScriptHelper.cs
- GridView.cs
- EUCJPEncoding.cs
- RegexNode.cs
- MetafileEditor.cs
- Vector3DCollectionValueSerializer.cs
- TreeChangeInfo.cs
- BasicCommandTreeVisitor.cs
- DataBoundControl.cs
- UIElement.cs
- DEREncoding.cs
- _AutoWebProxyScriptEngine.cs
- COM2ComponentEditor.cs
- StringSource.cs
- OleDbDataAdapter.cs
- DesignTimeResourceProviderFactoryAttribute.cs
- CodeDirectionExpression.cs
- StylusPointPropertyInfo.cs
- SqlDuplicator.cs