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
- SafeHandle.cs
- ParseChildrenAsPropertiesAttribute.cs
- EndpointNameMessageFilter.cs
- ObjectDataSourceEventArgs.cs
- FileRecordSequenceHelper.cs
- DefaultBindingPropertyAttribute.cs
- Int32.cs
- OraclePermissionAttribute.cs
- Timer.cs
- FileDataSourceCache.cs
- DynamicILGenerator.cs
- X509Utils.cs
- EndpointIdentityExtension.cs
- WizardPanel.cs
- TextParagraphCache.cs
- ProfilePropertyNameValidator.cs
- Rect3DValueSerializer.cs
- CopyAttributesAction.cs
- PeerSecurityHelpers.cs
- StreamGeometry.cs
- PublisherMembershipCondition.cs
- CellIdBoolean.cs
- TimeSpan.cs
- ACL.cs
- BindUriHelper.cs
- PeerResolverBindingElement.cs
- AsyncOperationManager.cs
- WebControlParameterProxy.cs
- xmlglyphRunInfo.cs
- UnsupportedPolicyOptionsException.cs
- FocusChangedEventArgs.cs
- SqlConnectionStringBuilder.cs
- SafeNativeMethods.cs
- DataTablePropertyDescriptor.cs
- QuotedPrintableStream.cs
- Parser.cs
- SeparatorAutomationPeer.cs
- WebEventTraceProvider.cs
- XamlPoint3DCollectionSerializer.cs
- odbcmetadatafactory.cs
- NegatedCellConstant.cs
- TextSelectionHighlightLayer.cs
- DefaultTraceListener.cs
- DataTableReaderListener.cs
- BaseDataBoundControl.cs
- StandardOleMarshalObject.cs
- BaseCollection.cs
- TraceSwitch.cs
- PieceDirectory.cs
- DecimalFormatter.cs
- MsmqTransportElement.cs
- DataGridViewToolTip.cs
- ListViewUpdateEventArgs.cs
- ProcessThreadCollection.cs
- FileCodeGroup.cs
- ToolStrip.cs
- FixedTextSelectionProcessor.cs
- FormViewCommandEventArgs.cs
- SmtpTransport.cs
- DataControlFieldCollection.cs
- ForceCopyBuildProvider.cs
- DocumentApplicationDocumentViewer.cs
- ToolbarAUtomationPeer.cs
- ServiceOperationListItem.cs
- CodeTypeDeclaration.cs
- Transform3D.cs
- SelectionRange.cs
- PaperSize.cs
- Condition.cs
- altserialization.cs
- UIElementAutomationPeer.cs
- ObjectDataProvider.cs
- CompositeCollectionView.cs
- MergeFilterQuery.cs
- Overlapped.cs
- ListViewDeletedEventArgs.cs
- SetStateDesigner.cs
- BaseCodeDomTreeGenerator.cs
- RequiredAttributeAttribute.cs
- DesignOnlyAttribute.cs
- SystemUdpStatistics.cs
- TextBox.cs
- PictureBox.cs
- ReadOnlyCollection.cs
- PersistenceProviderFactory.cs
- HttpPostedFile.cs
- AtomServiceDocumentSerializer.cs
- MdiWindowListStrip.cs
- GPRECTF.cs
- BuilderInfo.cs
- SqlFileStream.cs
- ListView.cs
- HostExecutionContextManager.cs
- RegistryKey.cs
- SqlTriggerContext.cs
- InfoCardSymmetricCrypto.cs
- GetCryptoTransformRequest.cs
- wpf-etw.cs
- XmlIgnoreAttribute.cs
- DelegatedStream.cs