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
- ReferentialConstraint.cs
- TraceSource.cs
- DisplayInformation.cs
- CurrencyWrapper.cs
- FlowDocumentPageViewerAutomationPeer.cs
- WindowsStatusBar.cs
- Parser.cs
- ExecutionScope.cs
- MethodSignatureGenerator.cs
- PropertyDescriptor.cs
- ThrowHelper.cs
- HttpListenerRequest.cs
- FlowDocument.cs
- SpecularMaterial.cs
- RepeatInfo.cs
- SystemTcpStatistics.cs
- BindStream.cs
- TypeTypeConverter.cs
- CodeCompileUnit.cs
- PageHandlerFactory.cs
- WindowsAuthenticationEventArgs.cs
- QilTargetType.cs
- MessageLoggingElement.cs
- EventData.cs
- ParallelTimeline.cs
- DurableOperationContext.cs
- DataRelationPropertyDescriptor.cs
- PersonalizationDictionary.cs
- SudsWriter.cs
- odbcmetadatafactory.cs
- XmlValidatingReader.cs
- DiscoveryOperationContext.cs
- Encoding.cs
- CodeArrayCreateExpression.cs
- AuthStoreRoleProvider.cs
- PerspectiveCamera.cs
- SourceElementsCollection.cs
- CodeMemberEvent.cs
- NativeObjectSecurity.cs
- SignerInfo.cs
- QueryCacheKey.cs
- InboundActivityHelper.cs
- ServiceOperation.cs
- TraceFilter.cs
- BaseTreeIterator.cs
- XmlSchema.cs
- HitTestResult.cs
- SqlTypeConverter.cs
- Models.cs
- Stream.cs
- RequestCachingSection.cs
- UserControl.cs
- ManagementObjectSearcher.cs
- EncodingNLS.cs
- HttpRuntimeSection.cs
- SQLByteStorage.cs
- VoiceInfo.cs
- CachedCompositeFamily.cs
- ProtocolInformationWriter.cs
- DigitShape.cs
- ArgumentOutOfRangeException.cs
- CompilationRelaxations.cs
- JournalEntryListConverter.cs
- EntityStoreSchemaGenerator.cs
- ToolBar.cs
- BatchWriter.cs
- FixedPageStructure.cs
- BinHexDecoder.cs
- DirectionalLight.cs
- SQLMoneyStorage.cs
- EncoderExceptionFallback.cs
- _CookieModule.cs
- DynamicAttribute.cs
- UserNameSecurityTokenProvider.cs
- ColumnWidthChangedEvent.cs
- Fx.cs
- BamlRecordReader.cs
- WaitHandle.cs
- EventWaitHandle.cs
- BufferedGraphicsContext.cs
- SecurityProtocolFactory.cs
- ResourceDescriptionAttribute.cs
- EdmComplexTypeAttribute.cs
- XmlBufferReader.cs
- MarginCollapsingState.cs
- HeaderCollection.cs
- SqlDataRecord.cs
- mansign.cs
- LicFileLicenseProvider.cs
- FormsAuthenticationUser.cs
- TreeNode.cs
- AttachedPropertyBrowsableForChildrenAttribute.cs
- WaitingCursor.cs
- AtomEntry.cs
- RestClientProxyHandler.cs
- HttpWrapper.cs
- ListenerSingletonConnectionReader.cs
- ExclusiveCanonicalizationTransform.cs
- LinkDescriptor.cs
- EntityParameterCollection.cs