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
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- TextRangeEditLists.cs
- SelectQueryOperator.cs
- StrongNameKeyPair.cs
- EditorPartCollection.cs
- ConnectionManagementSection.cs
- GiveFeedbackEventArgs.cs
- UnsafeNativeMethodsTablet.cs
- PrtCap_Base.cs
- SettingsBase.cs
- SortDescription.cs
- TraceSection.cs
- ValidatedControlConverter.cs
- OneToOneMappingSerializer.cs
- SystemFonts.cs
- TemplatePagerField.cs
- MarshalByRefObject.cs
- ChannelDispatcher.cs
- XmlSchemaSimpleTypeUnion.cs
- SmiMetaDataProperty.cs
- MailAddressParser.cs
- TableCellAutomationPeer.cs
- EditorZoneBase.cs
- AutoResizedEvent.cs
- RangeExpression.cs
- GridViewColumnHeaderAutomationPeer.cs
- Highlights.cs
- TreeView.cs
- UniqueConstraint.cs
- WebCategoryAttribute.cs
- AsyncPostBackTrigger.cs
- BypassElement.cs
- RelatedView.cs
- OleDbInfoMessageEvent.cs
- HotSpotCollection.cs
- UnsafeNativeMethods.cs
- PrintingPermission.cs
- ReachSerializationCacheItems.cs
- Function.cs
- InkPresenter.cs
- TextParaLineResult.cs
- Char.cs
- GorillaCodec.cs
- ChannelBinding.cs
- WebServiceErrorEvent.cs
- WebPartUtil.cs
- ProfileSettings.cs
- MDIClient.cs
- SBCSCodePageEncoding.cs
- ExpressionConverter.cs
- WebConfigurationHost.cs
- ButtonBase.cs
- NotifyCollectionChangedEventArgs.cs
- RenderOptions.cs
- Padding.cs
- Accessible.cs
- ControllableStoryboardAction.cs
- UrlMappingCollection.cs
- ToolStripGripRenderEventArgs.cs
- HtmlDocument.cs
- WebPartExportVerb.cs
- OpenTypeCommon.cs
- Msec.cs
- ListBoxAutomationPeer.cs
- DropShadowEffect.cs
- DocumentXPathNavigator.cs
- SHA512.cs
- TextSimpleMarkerProperties.cs
- BitmapEffectCollection.cs
- PropertySegmentSerializer.cs
- HtmlInputReset.cs
- WebPartsSection.cs
- DeclarativeCatalogPart.cs
- TableLayoutRowStyleCollection.cs
- TrueReadOnlyCollection.cs
- EntityCommandExecutionException.cs
- X509PeerCertificateElement.cs
- BooleanConverter.cs
- DBConnectionString.cs
- GraphicsContext.cs
- UnconditionalPolicy.cs
- IpcManager.cs
- ConstructorBuilder.cs
- HttpSessionStateBase.cs
- Pair.cs
- ZipIOBlockManager.cs
- DebugView.cs
- StateMachineAction.cs
- DeferredSelectedIndexReference.cs
- ToolStripCodeDomSerializer.cs
- SizeValueSerializer.cs
- XmlDataSourceDesigner.cs
- SymmetricAlgorithm.cs
- HandleCollector.cs
- DynamicActivityTypeDescriptor.cs
- BitmapEffectDrawing.cs
- ScaleTransform3D.cs
- ValidateNames.cs
- CustomAttribute.cs
- TableAdapterManagerMethodGenerator.cs
- Random.cs