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
- CharacterHit.cs
- CommonXSendMessage.cs
- KeyedCollection.cs
- KeyMatchBuilder.cs
- UIAgentAsyncEndRequest.cs
- MenuItemStyle.cs
- HTMLTagNameToTypeMapper.cs
- _SingleItemRequestCache.cs
- UnaryNode.cs
- Rules.cs
- SqlTransaction.cs
- BamlVersionHeader.cs
- Invariant.cs
- ManagementExtension.cs
- StaticFileHandler.cs
- SubstitutionDesigner.cs
- DesignSurfaceManager.cs
- ComponentResourceKeyConverter.cs
- IntSecurity.cs
- EnlistmentState.cs
- MultipleViewPattern.cs
- ConditionBrowserDialog.cs
- DeviceContext2.cs
- NoneExcludedImageIndexConverter.cs
- MediaEntryAttribute.cs
- PocoPropertyAccessorStrategy.cs
- PlanCompiler.cs
- FilteredAttributeCollection.cs
- VariableReference.cs
- DockAndAnchorLayout.cs
- WebPartVerbsEventArgs.cs
- Path.cs
- DataSetFieldSchema.cs
- MemberHolder.cs
- ContentElement.cs
- EntityDataSourceWrapperCollection.cs
- TypeDescriptionProvider.cs
- ParagraphVisual.cs
- MachineKeyConverter.cs
- XmlNamespaceMapping.cs
- DataGridPagerStyle.cs
- StorageComplexPropertyMapping.cs
- GenerateScriptTypeAttribute.cs
- CmsUtils.cs
- ToolStripScrollButton.cs
- JumpTask.cs
- ProbeRequestResponseAsyncResult.cs
- LifetimeServices.cs
- StringBuilder.cs
- PenThread.cs
- ConvertEvent.cs
- SHA256Managed.cs
- DispatcherSynchronizationContext.cs
- AssemblyCollection.cs
- DelegatingHeader.cs
- SecureStringHasher.cs
- ConfigurationLocation.cs
- SqlVersion.cs
- EntryIndex.cs
- GeneralTransform3D.cs
- BuildManagerHost.cs
- NotCondition.cs
- ByteAnimationBase.cs
- PathGeometry.cs
- OdbcConnection.cs
- KeyNotFoundException.cs
- SmiRecordBuffer.cs
- TrustLevel.cs
- DataMisalignedException.cs
- StreamInfo.cs
- StylusPointPropertyInfoDefaults.cs
- DesignerAutoFormat.cs
- listitem.cs
- SafeCryptoHandles.cs
- ConnectionPointCookie.cs
- DbUpdateCommandTree.cs
- BezierSegment.cs
- FontStretches.cs
- RawUIStateInputReport.cs
- XmlConvert.cs
- FunctionDetailsReader.cs
- ConnectionInterfaceCollection.cs
- FilterEventArgs.cs
- DataGridViewSelectedCellCollection.cs
- RefExpr.cs
- EditorAttributeInfo.cs
- PingOptions.cs
- RubberbandSelector.cs
- RoutedEventHandlerInfo.cs
- EditorAttributeInfo.cs
- LongValidatorAttribute.cs
- HideDisabledControlAdapter.cs
- ServiceContractGenerator.cs
- HandlerMappingMemo.cs
- ContentPresenter.cs
- CircleHotSpot.cs
- XmlSchemaType.cs
- _HelperAsyncResults.cs
- AutoResizedEvent.cs
- SqlReorderer.cs