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
- CheckBox.cs
- WebReferencesBuildProvider.cs
- TemplateColumn.cs
- ReadOnlyDataSourceView.cs
- BitmapEffectGeneralTransform.cs
- ExpandSegmentCollection.cs
- ResolveNameEventArgs.cs
- DesignTimeTemplateParser.cs
- DependsOnAttribute.cs
- BitmapEffect.cs
- MultipartContentParser.cs
- RowToParametersTransformer.cs
- DataGridSortCommandEventArgs.cs
- PropertyInfoSet.cs
- Propagator.JoinPropagator.cs
- SQLBytes.cs
- DiscoveryDocumentSearchPattern.cs
- ApplicationHost.cs
- ValueType.cs
- InnerItemCollectionView.cs
- ProtectedProviderSettings.cs
- GridViewItemAutomationPeer.cs
- OleDbPermission.cs
- StateDesigner.cs
- ping.cs
- ColumnResult.cs
- CompareValidator.cs
- WebServiceMethodData.cs
- WindowsBrush.cs
- ListBase.cs
- HtmlHistory.cs
- LeaseManager.cs
- SystemIcmpV4Statistics.cs
- FaultDesigner.cs
- KeyToListMap.cs
- ExceptionCollection.cs
- ChildChangedEventArgs.cs
- recordstatefactory.cs
- ScriptModule.cs
- GradientSpreadMethodValidation.cs
- CopyNodeSetAction.cs
- AsyncDataRequest.cs
- MissingManifestResourceException.cs
- CommandField.cs
- DriveInfo.cs
- DbDeleteCommandTree.cs
- CommandManager.cs
- XhtmlTextWriter.cs
- ForeignConstraint.cs
- _WebProxyDataBuilder.cs
- DataGridViewAutoSizeModeEventArgs.cs
- SystemParameters.cs
- TriState.cs
- XPathNodeInfoAtom.cs
- ParentQuery.cs
- CollectionViewGroupInternal.cs
- TableLayoutPanelCellPosition.cs
- ConnectionPoolManager.cs
- ListSurrogate.cs
- HtmlHead.cs
- MergePropertyDescriptor.cs
- AsynchronousChannelMergeEnumerator.cs
- CompilerHelpers.cs
- FormsAuthenticationEventArgs.cs
- HwndSource.cs
- StatusBarPanel.cs
- figurelengthconverter.cs
- ChangeTracker.cs
- ScanQueryOperator.cs
- BamlRecords.cs
- MessageProtectionOrder.cs
- MethodExecutor.cs
- AssemblyFilter.cs
- Int64AnimationUsingKeyFrames.cs
- StructureChangedEventArgs.cs
- TrackingStringDictionary.cs
- EventLogPermissionEntryCollection.cs
- ExpressionCopier.cs
- InProcStateClientManager.cs
- MimeMultiPart.cs
- NativeMsmqMessage.cs
- BaseTemplateCodeDomTreeGenerator.cs
- TypeUsage.cs
- HiddenFieldPageStatePersister.cs
- CreateParams.cs
- TemplateKey.cs
- FormViewCommandEventArgs.cs
- Itemizer.cs
- ClientTargetSection.cs
- SHA256Managed.cs
- Rect.cs
- MailDefinition.cs
- FilterQuery.cs
- PerfCounters.cs
- _LocalDataStoreMgr.cs
- FamilyMap.cs
- CommandEventArgs.cs
- Deflater.cs
- HighContrastHelper.cs
- ScrollBar.cs