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
- RedBlackList.cs
- InkCanvasSelection.cs
- HtmlInputReset.cs
- TemplateComponentConnector.cs
- InstanceKeyCompleteException.cs
- PropertyChangeTracker.cs
- SqlCacheDependencySection.cs
- LogicalExpr.cs
- ObjectDataSourceSelectingEventArgs.cs
- IFlowDocumentViewer.cs
- DataObject.cs
- InstanceLockedException.cs
- TextTreeInsertElementUndoUnit.cs
- DurableOperationContext.cs
- ForeignKeyConstraint.cs
- ScriptingAuthenticationServiceSection.cs
- MultipleViewProviderWrapper.cs
- ResourcePool.cs
- HtmlInputReset.cs
- GridViewCellAutomationPeer.cs
- DataObject.cs
- ModuleBuilder.cs
- HttpModuleActionCollection.cs
- ObjectList.cs
- ReceiveContextCollection.cs
- CompModHelpers.cs
- DbConnectionFactory.cs
- FastEncoderStatics.cs
- DateTimeConstantAttribute.cs
- XmlSchemaObjectTable.cs
- BindingContext.cs
- counter.cs
- updatecommandorderer.cs
- SafeCertificateStore.cs
- ObjectQueryExecutionPlan.cs
- TraceUtility.cs
- XmlSchemaObjectTable.cs
- PartDesigner.cs
- SchemaElementLookUpTableEnumerator.cs
- TextSelectionHelper.cs
- Processor.cs
- ColorConvertedBitmapExtension.cs
- ResourceContainer.cs
- WindowsFormsSectionHandler.cs
- PeerCollaboration.cs
- PtsHost.cs
- CookieProtection.cs
- Symbol.cs
- NativeMethodsOther.cs
- DataServiceContext.cs
- PageAsyncTaskManager.cs
- CustomPopupPlacement.cs
- DataGridBoolColumn.cs
- UndirectedGraph.cs
- WebRequestModuleElementCollection.cs
- ImageBrush.cs
- WindowInteropHelper.cs
- EdmComplexPropertyAttribute.cs
- RadioButtonFlatAdapter.cs
- ValidatingReaderNodeData.cs
- ReflectEventDescriptor.cs
- NavigationCommands.cs
- SettingsAttributes.cs
- WebPartsPersonalizationAuthorization.cs
- PathSegment.cs
- SafeNativeMethodsCLR.cs
- AttachedPropertyMethodSelector.cs
- NameValuePermission.cs
- StrongNameIdentityPermission.cs
- VectorCollectionConverter.cs
- HatchBrush.cs
- GeneralTransform3DGroup.cs
- HitTestFilterBehavior.cs
- ConfigDefinitionUpdates.cs
- AbstractSvcMapFileLoader.cs
- StrongNamePublicKeyBlob.cs
- Cast.cs
- VerifyHashRequest.cs
- UshortList2.cs
- TemplateField.cs
- RawAppCommandInputReport.cs
- ReadOnlyKeyedCollection.cs
- PersistChildrenAttribute.cs
- Scheduler.cs
- CustomPopupPlacement.cs
- TransformerInfo.cs
- ByteAnimationBase.cs
- SqlDataSourceQueryEditor.cs
- HandlerBase.cs
- XmlElement.cs
- TextBox.cs
- TrustManager.cs
- Pkcs7Recipient.cs
- SubqueryRules.cs
- TreeNodeCollection.cs
- PageCatalogPart.cs
- ArrayExtension.cs
- UrlMappingsModule.cs
- StrokeNodeData.cs
- LinqDataSourceStatusEventArgs.cs