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
- PrtCap_Public.cs
- TableCellAutomationPeer.cs
- RewritingValidator.cs
- FixedSOMTextRun.cs
- RoleService.cs
- Rijndael.cs
- XmlSchemaProviderAttribute.cs
- Activator.cs
- RelationshipManager.cs
- XmlAttributeProperties.cs
- CodeNamespaceCollection.cs
- DataGridRowEventArgs.cs
- ContextMenuAutomationPeer.cs
- CapiNative.cs
- ManipulationStartedEventArgs.cs
- XmlUtil.cs
- TypeExtensionSerializer.cs
- GlobalizationAssembly.cs
- TransmissionStrategy.cs
- CryptoStream.cs
- PageStatePersister.cs
- CorrelationManager.cs
- DataGridCellInfo.cs
- Util.cs
- Polygon.cs
- DataGridViewRowsAddedEventArgs.cs
- WorkflowMarkupSerializationManager.cs
- AuthenticatingEventArgs.cs
- HierarchicalDataBoundControl.cs
- SchemaInfo.cs
- DataGridViewDataErrorEventArgs.cs
- SiteMapHierarchicalDataSourceView.cs
- AsymmetricKeyExchangeFormatter.cs
- TypeProvider.cs
- WebServiceClientProxyGenerator.cs
- CodeDefaultValueExpression.cs
- DataSourceSerializationException.cs
- TextTreeDeleteContentUndoUnit.cs
- ToolStripItemRenderEventArgs.cs
- InvokeHandlers.cs
- XhtmlBasicLabelAdapter.cs
- DelegateArgumentValue.cs
- Camera.cs
- ResourceWriter.cs
- SQLInt64.cs
- Ticks.cs
- regiisutil.cs
- AddInAttribute.cs
- Double.cs
- ArcSegment.cs
- AssociatedControlConverter.cs
- UshortList2.cs
- SmuggledIUnknown.cs
- EntityDataSourceWrapper.cs
- MenuItem.cs
- JoinCqlBlock.cs
- ElementsClipboardData.cs
- PrimitiveDataContract.cs
- XPathException.cs
- ProtocolViolationException.cs
- ListenerConstants.cs
- EntityDataSourceValidationException.cs
- PaginationProgressEventArgs.cs
- IriParsingElement.cs
- QueryAccessibilityHelpEvent.cs
- WSDualHttpSecurityElement.cs
- MenuItemBindingCollection.cs
- WindowsFormsSynchronizationContext.cs
- FontFamily.cs
- TableDetailsRow.cs
- LambdaCompiler.cs
- FillRuleValidation.cs
- RuleProcessor.cs
- OleDbMetaDataFactory.cs
- WindowsToolbarItemAsMenuItem.cs
- GeneralTransform3DGroup.cs
- TemplateComponentConnector.cs
- BitVector32.cs
- InvalidProgramException.cs
- Transform3DCollection.cs
- SynchronizationLockException.cs
- DWriteFactory.cs
- RelationshipSet.cs
- TrustLevel.cs
- InterleavedZipPartStream.cs
- ProfilePropertySettings.cs
- UrlMapping.cs
- EntityTypeEmitter.cs
- localization.cs
- DnsEndPoint.cs
- OracleParameterCollection.cs
- PreservationFileWriter.cs
- SimpleWebHandlerParser.cs
- LabelEditEvent.cs
- DeferredTextReference.cs
- ReadOnlyDataSourceView.cs
- CacheAxisQuery.cs
- GridViewRowPresenterBase.cs
- SystemNetworkInterface.cs
- ParseNumbers.cs