Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx35 / System.ServiceModel.Web / System / ServiceModel / Channels / HttpStreamMessageEncoderFactory.cs / 1305376 / 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 (BufferManagerOutputStream stream = new BufferManagerOutputStream(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 (BufferManagerOutputStream stream = new BufferManagerOutputStream(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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DataGridViewRowPrePaintEventArgs.cs
- IIS7UserPrincipal.cs
- TabItemWrapperAutomationPeer.cs
- AttributeSetAction.cs
- AppDomainAttributes.cs
- FontFamily.cs
- PointConverter.cs
- DesignerDataRelationship.cs
- HWStack.cs
- AppDomainManager.cs
- CommandLineParser.cs
- DataServiceQueryException.cs
- CustomErrorCollection.cs
- BlockExpression.cs
- SpellerStatusTable.cs
- WebPartTransformer.cs
- TypedServiceOperationListItem.cs
- EntityAdapter.cs
- ConfigXmlCDataSection.cs
- PolyLineSegment.cs
- SafeFileMappingHandle.cs
- FamilyTypeface.cs
- ExecutionEngineException.cs
- FontInfo.cs
- StylusEditingBehavior.cs
- Soap.cs
- EndpointNameMessageFilter.cs
- MbpInfo.cs
- AsyncPostBackTrigger.cs
- FontSource.cs
- Operators.cs
- SingleStorage.cs
- UIntPtr.cs
- MetadataCacheItem.cs
- EncryptedType.cs
- ProtectedProviderSettings.cs
- MultipleViewProviderWrapper.cs
- GrammarBuilderPhrase.cs
- OdbcErrorCollection.cs
- EventArgs.cs
- ExecutionEngineException.cs
- ArgIterator.cs
- M3DUtil.cs
- OleDbConnectionInternal.cs
- InfoCardCryptoHelper.cs
- WrappedKeySecurityTokenParameters.cs
- ConfigurationElementCollection.cs
- TypeDelegator.cs
- DataGridViewCellCancelEventArgs.cs
- EventLogPermissionAttribute.cs
- IntSecurity.cs
- FormsAuthenticationModule.cs
- DesignerCommandAdapter.cs
- BlurBitmapEffect.cs
- PostBackOptions.cs
- GenericPrincipal.cs
- SymbolMethod.cs
- SelectionItemProviderWrapper.cs
- HostSecurityManager.cs
- Regex.cs
- FrameworkContentElement.cs
- Int16Animation.cs
- InternalRelationshipCollection.cs
- ActionFrame.cs
- AssemblyInfo.cs
- DetailsViewRow.cs
- SiteMapNodeItemEventArgs.cs
- Activity.cs
- ServiceHttpHandlerFactory.cs
- RetrieveVirtualItemEventArgs.cs
- UInt64Storage.cs
- CRYPTPROTECT_PROMPTSTRUCT.cs
- InkCanvasAutomationPeer.cs
- MULTI_QI.cs
- InkCanvasInnerCanvas.cs
- PeerContact.cs
- UnlockCardRequest.cs
- BindingOperations.cs
- SystemWebCachingSectionGroup.cs
- EntityDataSourceValidationException.cs
- Point3DCollectionValueSerializer.cs
- ToolStripLocationCancelEventArgs.cs
- CodeChecksumPragma.cs
- PointConverter.cs
- MsmqIntegrationBindingCollectionElement.cs
- BindingList.cs
- DiscoveryExceptionDictionary.cs
- DiagnosticEventProvider.cs
- LineGeometry.cs
- MarginCollapsingState.cs
- CannotUnloadAppDomainException.cs
- ChangeDirector.cs
- XmlTextWriter.cs
- WindowsBrush.cs
- PrimitiveDataContract.cs
- EntityEntry.cs
- ProcessThreadDesigner.cs
- ObjectContextServiceProvider.cs
- SoapElementAttribute.cs
- CheckoutException.cs