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
- LifetimeServices.cs
- NativeMethods.cs
- PlainXmlDeserializer.cs
- PerformanceCountersElement.cs
- KoreanCalendar.cs
- DataGridrowEditEndingEventArgs.cs
- FrameworkTextComposition.cs
- BitmapEffectCollection.cs
- SyntaxCheck.cs
- GenericAuthenticationEventArgs.cs
- basevalidator.cs
- TableLayoutSettings.cs
- InputLangChangeRequestEvent.cs
- ArglessEventHandlerProxy.cs
- filewebresponse.cs
- ZipIOBlockManager.cs
- XmlDictionaryReaderQuotas.cs
- WebPartVerbsEventArgs.cs
- TiffBitmapEncoder.cs
- StringUtil.cs
- SubMenuStyle.cs
- TypeGenericEnumerableViewSchema.cs
- ModelVisual3D.cs
- MdiWindowListItemConverter.cs
- AttributeCollection.cs
- MSG.cs
- GenericPrincipal.cs
- StylusPlugin.cs
- HttpAsyncResult.cs
- TableHeaderCell.cs
- AccessDataSourceView.cs
- XmlSchemaNotation.cs
- BamlReader.cs
- CommonRemoteMemoryBlock.cs
- ToolStripRenderer.cs
- SoapEnumAttribute.cs
- CodeMemberField.cs
- MarkedHighlightComponent.cs
- Parser.cs
- AutoGeneratedFieldProperties.cs
- XmlMessageFormatter.cs
- DbConnectionPool.cs
- ResourceExpressionBuilder.cs
- GridViewDeletedEventArgs.cs
- glyphs.cs
- BinaryEditor.cs
- WebServiceData.cs
- TableLayoutPanelCellPosition.cs
- DocumentsTrace.cs
- DrawListViewItemEventArgs.cs
- DrawingGroup.cs
- SectionRecord.cs
- ZipIOExtraFieldElement.cs
- ModelUtilities.cs
- Types.cs
- PngBitmapDecoder.cs
- OrderedHashRepartitionStream.cs
- Evidence.cs
- FileSystemWatcher.cs
- XmlSerializableReader.cs
- SystemNetworkInterface.cs
- _RequestCacheProtocol.cs
- ClientBuildManagerTypeDescriptionProviderBridge.cs
- RefreshPropertiesAttribute.cs
- PropertyInfoSet.cs
- SR.cs
- TraceSource.cs
- DecoderReplacementFallback.cs
- ProfilePropertySettings.cs
- TextControl.cs
- ReadWriteSpinLock.cs
- ImageClickEventArgs.cs
- SqlBuilder.cs
- MSAAEventDispatcher.cs
- HttpCacheParams.cs
- XamlToRtfParser.cs
- MatrixAnimationUsingKeyFrames.cs
- HttpRequestBase.cs
- JoinGraph.cs
- BitmapVisualManager.cs
- InheritanceContextHelper.cs
- ValidationSummary.cs
- InboundActivityHelper.cs
- _HeaderInfo.cs
- PropertyGeneratedEventArgs.cs
- DefaultClaimSet.cs
- CompilerTypeWithParams.cs
- EnumerationRangeValidationUtil.cs
- InputMethodStateTypeInfo.cs
- WorkflowNamespace.cs
- NativeRightsManagementAPIsStructures.cs
- MediaElementAutomationPeer.cs
- Rfc2898DeriveBytes.cs
- _HeaderInfoTable.cs
- Point3DCollectionValueSerializer.cs
- EditCommandColumn.cs
- CircleHotSpot.cs
- InteropBitmapSource.cs
- StringFormat.cs
- ApplicationContext.cs