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
- SubclassTypeValidatorAttribute.cs
- CalendarSelectionChangedEventArgs.cs
- PropertyGridDesigner.cs
- ManagementObjectSearcher.cs
- CustomTypeDescriptor.cs
- WebPartEditorApplyVerb.cs
- ServicePoint.cs
- ToolStripManager.cs
- CompilationLock.cs
- MultipleViewPattern.cs
- SystemBrushes.cs
- LexicalChunk.cs
- SharedStatics.cs
- RuleSetDialog.cs
- HMACSHA512.cs
- AsymmetricSecurityBindingElement.cs
- CodeAttachEventStatement.cs
- OpenTypeLayoutCache.cs
- DesignerObjectListAdapter.cs
- SingleStorage.cs
- EventSourceCreationData.cs
- LayoutEditorPart.cs
- ServiceReference.cs
- RemotingException.cs
- ToolStripDropDown.cs
- CachedFontFace.cs
- SharedPersonalizationStateInfo.cs
- FixedSOMSemanticBox.cs
- DataListItemCollection.cs
- QilExpression.cs
- RoleGroupCollection.cs
- EdmFunctions.cs
- PrePrepareMethodAttribute.cs
- SafeLibraryHandle.cs
- InvalidPrinterException.cs
- UnmanagedBitmapWrapper.cs
- ObjectSelectorEditor.cs
- KeyProperty.cs
- SchemaMapping.cs
- XmlCustomFormatter.cs
- InProcStateClientManager.cs
- CharacterBuffer.cs
- ScriptComponentDescriptor.cs
- ScalarConstant.cs
- FeatureManager.cs
- ZoneIdentityPermission.cs
- CompareValidator.cs
- BridgeDataReader.cs
- TextTreeRootNode.cs
- Memoizer.cs
- SyncMethodInvoker.cs
- CatalogPartCollection.cs
- RuleElement.cs
- Types.cs
- RootProfilePropertySettingsCollection.cs
- FlowLayoutPanel.cs
- SafeIUnknown.cs
- SecureStringHasher.cs
- UnionCodeGroup.cs
- ConstraintStruct.cs
- _NegoState.cs
- NamespaceInfo.cs
- DescendentsWalker.cs
- FolderNameEditor.cs
- EntityDataSourceView.cs
- ITextView.cs
- XamlInterfaces.cs
- FixedSOMImage.cs
- PluralizationServiceUtil.cs
- AttachedPropertyBrowsableForChildrenAttribute.cs
- TabControlCancelEvent.cs
- TableStyle.cs
- CodeIterationStatement.cs
- Image.cs
- EditorPart.cs
- BuilderPropertyEntry.cs
- ValidationEventArgs.cs
- Bind.cs
- DiscreteKeyFrames.cs
- RecordsAffectedEventArgs.cs
- XmlChoiceIdentifierAttribute.cs
- HttpDebugHandler.cs
- UnauthorizedWebPart.cs
- ControlTemplate.cs
- ipaddressinformationcollection.cs
- WebPartVerb.cs
- ScriptControlManager.cs
- RequestCacheValidator.cs
- DropShadowEffect.cs
- SelectingProviderEventArgs.cs
- HttpCacheVaryByContentEncodings.cs
- FocusTracker.cs
- ConnectionPointCookie.cs
- ShaperBuffers.cs
- ReferencedType.cs
- Tile.cs
- ValueConversionAttribute.cs
- MatrixAnimationUsingKeyFrames.cs
- ColorAnimationBase.cs
- NumberSubstitution.cs