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
- datacache.cs
- SharedUtils.cs
- RoleManagerModule.cs
- FormViewInsertedEventArgs.cs
- CodeCompiler.cs
- TraceLog.cs
- EntitySetDataBindingList.cs
- FunctionCommandText.cs
- HtmlShimManager.cs
- DataServices.cs
- HwndMouseInputProvider.cs
- initElementDictionary.cs
- commandenforcer.cs
- PageHandlerFactory.cs
- clipboard.cs
- DataSourceXmlTextReader.cs
- FreeFormDragDropManager.cs
- DataSysAttribute.cs
- BordersPage.cs
- DPCustomTypeDescriptor.cs
- XPathConvert.cs
- ProxyWebPartManager.cs
- ADMembershipProvider.cs
- StateBag.cs
- WeakReference.cs
- ParagraphResult.cs
- StructuredTypeEmitter.cs
- Path.cs
- ObjectParameter.cs
- MemberAccessException.cs
- TraceEventCache.cs
- initElementDictionary.cs
- ConstantCheck.cs
- DesignerActionUI.cs
- TextEmbeddedObject.cs
- FixedTextBuilder.cs
- Baml2006ReaderSettings.cs
- KeyConstraint.cs
- BamlLocalizer.cs
- CreateParams.cs
- FormViewUpdateEventArgs.cs
- XmlSchemaSimpleTypeRestriction.cs
- ISAPIRuntime.cs
- PassportPrincipal.cs
- XmlSchemaSimpleTypeRestriction.cs
- SessionStateContainer.cs
- AttributeQuery.cs
- ArgIterator.cs
- StopStoryboard.cs
- EntityDataSourceChangedEventArgs.cs
- XmlHierarchicalDataSourceView.cs
- NetPeerTcpBindingElement.cs
- DbUpdateCommandTree.cs
- HttpProfileGroupBase.cs
- WrappedIUnknown.cs
- ManagementObjectSearcher.cs
- ConstructorBuilder.cs
- WsatExtendedInformation.cs
- BamlResourceDeserializer.cs
- StateMachineHistory.cs
- SvcMapFileLoader.cs
- KeyBinding.cs
- HorizontalAlignConverter.cs
- HtmlButton.cs
- _IPv6Address.cs
- ProfileGroupSettingsCollection.cs
- EpmSourcePathSegment.cs
- BypassElement.cs
- SocketAddress.cs
- ToolStripRendererSwitcher.cs
- TdsParserSafeHandles.cs
- OdbcConnectionString.cs
- XPathDocumentBuilder.cs
- NetworkInformationPermission.cs
- GetKeyedHashRequest.cs
- GeometryHitTestParameters.cs
- ThicknessAnimationBase.cs
- CheckableControlBaseAdapter.cs
- EntityDataSourceConfigureObjectContext.cs
- HandleValueEditor.cs
- StringInfo.cs
- DefaultValueConverter.cs
- XmlCharType.cs
- URLAttribute.cs
- HMACSHA384.cs
- SpeechRecognizer.cs
- FileVersion.cs
- ScriptReferenceEventArgs.cs
- StartUpEventArgs.cs
- StateValidator.cs
- DotExpr.cs
- TableProviderWrapper.cs
- Message.cs
- DependencyPropertyKind.cs
- FormsAuthenticationUserCollection.cs
- HttpCookiesSection.cs
- CopyNodeSetAction.cs
- TdsParserStaticMethods.cs
- PromptBuilder.cs
- HtmlInputReset.cs