Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / NetFx35 / System.ServiceModel.Web / System / ServiceModel / Channels / HttpStreamMessageEncoderFactory.cs / 1 / 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 (BufferedOutputStream stream = new BufferedOutputStream(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 (BufferedOutputStream stream = new BufferedOutputStream(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. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ProtocolsSection.cs
- DataGridViewLayoutData.cs
- TransactionScope.cs
- DataGridViewCellFormattingEventArgs.cs
- PerformanceCounterPermission.cs
- ExpressionBinding.cs
- Parameter.cs
- ColumnReorderedEventArgs.cs
- XmlSerializer.cs
- UdpReplyToBehavior.cs
- ObjectKeyFrameCollection.cs
- CommentEmitter.cs
- LineSegment.cs
- XmlDocumentSurrogate.cs
- NodeInfo.cs
- TextWriterEngine.cs
- SafeNativeMethods.cs
- ClientUrlResolverWrapper.cs
- GenericRootAutomationPeer.cs
- HtmlDocument.cs
- DataTableReader.cs
- User.cs
- OleCmdHelper.cs
- RegisterInfo.cs
- SelectionPattern.cs
- SmtpReplyReaderFactory.cs
- LogEntrySerialization.cs
- Int32CAMarshaler.cs
- WindowsToolbar.cs
- ScrollEvent.cs
- LabelAutomationPeer.cs
- CursorConverter.cs
- ScriptResourceAttribute.cs
- QuaternionConverter.cs
- WhitespaceSignificantCollectionAttribute.cs
- MarkupCompilePass1.cs
- ListBindingConverter.cs
- UnauthorizedWebPart.cs
- precedingsibling.cs
- WriteLineDesigner.xaml.cs
- SmiTypedGetterSetter.cs
- LogManagementAsyncResult.cs
- FloaterBaseParaClient.cs
- X509CertificateStore.cs
- HttpListenerContext.cs
- DesignerPerfEventProvider.cs
- SqlRewriteScalarSubqueries.cs
- ClientSideQueueItem.cs
- ObjectStateManagerMetadata.cs
- SystemColors.cs
- InvalidWMPVersionException.cs
- RuleSetDialog.cs
- RuntimeResourceSet.cs
- MainMenu.cs
- RelationshipManager.cs
- ListParagraph.cs
- PersistenceTask.cs
- FixedDocumentPaginator.cs
- StateMachineSubscriptionManager.cs
- SingleStorage.cs
- WizardPanelChangingEventArgs.cs
- PolyLineSegment.cs
- NumberSubstitution.cs
- RelationshipDetailsRow.cs
- TreeNodeClickEventArgs.cs
- MetabaseSettingsIis7.cs
- SimplePropertyEntry.cs
- MonthChangedEventArgs.cs
- DBBindings.cs
- CfgParser.cs
- AnimationException.cs
- ElementProxy.cs
- WindowsListViewGroupSubsetLink.cs
- NoClickablePointException.cs
- RestHandler.cs
- CacheOutputQuery.cs
- PageRanges.cs
- SoapMessage.cs
- TextEncodedRawTextWriter.cs
- CustomAttributeSerializer.cs
- COM2Enum.cs
- MasterPageParser.cs
- PageThemeBuildProvider.cs
- UIInitializationException.cs
- XmlCharacterData.cs
- ContextInformation.cs
- RuntimeConfig.cs
- AdornedElementPlaceholder.cs
- TextServicesManager.cs
- EpmAttributeNameBuilder.cs
- SmiEventStream.cs
- DynamicValueConverter.cs
- ProxyElement.cs
- ProcessModuleCollection.cs
- HtmlElementEventArgs.cs
- HttpHandler.cs
- KeyValuePair.cs
- ConfigurationStrings.cs
- ParserContext.cs
- QuaternionRotation3D.cs