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
- _emptywebproxy.cs
- AuthenticatingEventArgs.cs
- Block.cs
- CustomTrackingRecord.cs
- XMLSyntaxException.cs
- invalidudtexception.cs
- SmtpAuthenticationManager.cs
- CategoryAttribute.cs
- CustomAttribute.cs
- XmlCharType.cs
- InputEventArgs.cs
- EventSinkHelperWriter.cs
- Highlights.cs
- BaseAsyncResult.cs
- Panel.cs
- SqlDeflator.cs
- ScriptResourceHandler.cs
- Point4D.cs
- GridViewColumnCollectionChangedEventArgs.cs
- LayoutUtils.cs
- GridItem.cs
- MemberNameValidator.cs
- RootBrowserWindow.cs
- TransportContext.cs
- ToolStripSystemRenderer.cs
- RelationshipEntry.cs
- Emitter.cs
- SessionStateSection.cs
- DesignerView.cs
- PropertyPathWorker.cs
- MethodImplAttribute.cs
- InvalidOleVariantTypeException.cs
- ControlUtil.cs
- newinstructionaction.cs
- ObjectDataSourceFilteringEventArgs.cs
- BindingCollection.cs
- DynamicActionMessageFilter.cs
- GridViewEditEventArgs.cs
- MaterialCollection.cs
- SqlNodeTypeOperators.cs
- PropertyExpression.cs
- Rect.cs
- SpecialNameAttribute.cs
- HatchBrush.cs
- FactoryMaker.cs
- ProjectionPathBuilder.cs
- ErrorInfoXmlDocument.cs
- BlurEffect.cs
- BaseCodeDomTreeGenerator.cs
- ProviderConnectionPoint.cs
- XslUrlEditor.cs
- ActivityWithResultConverter.cs
- PropertyToken.cs
- GroupItem.cs
- DataGridViewRowStateChangedEventArgs.cs
- CodeSnippetStatement.cs
- XmlTextEncoder.cs
- SessionStateItemCollection.cs
- ArrayMergeHelper.cs
- TraceHandler.cs
- PropertyItemInternal.cs
- OdbcDataReader.cs
- Button.cs
- AudioFileOut.cs
- MetadataHelper.cs
- DesignerHelpers.cs
- SAPIEngineTypes.cs
- Collection.cs
- WebServiceErrorEvent.cs
- IdleTimeoutMonitor.cs
- RadioButton.cs
- GridViewRow.cs
- DemultiplexingClientMessageFormatter.cs
- SplitContainer.cs
- RowUpdatedEventArgs.cs
- MemberBinding.cs
- SynchronizedDispatch.cs
- GeneralTransform3DTo2D.cs
- FileSecurity.cs
- GenericXmlSecurityTokenAuthenticator.cs
- MessagePropertyDescription.cs
- XmlMapping.cs
- RemoteWebConfigurationHost.cs
- XmlMtomWriter.cs
- BaseCodePageEncoding.cs
- WeakRefEnumerator.cs
- RSAPKCS1KeyExchangeDeformatter.cs
- WindowsGraphicsWrapper.cs
- PeerDuplexChannel.cs
- LogicalExpressionTypeConverter.cs
- ExpressionBuilder.cs
- DesignerView.xaml.cs
- PriorityBinding.cs
- RouteData.cs
- AllMembershipCondition.cs
- LineProperties.cs
- ExpressionBinding.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- FixedSOMPage.cs
- EncoderBestFitFallback.cs