Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.ServiceModel.Channels / System / ServiceModel / Channels / ByteStreamMessageEncoder.cs / 1305376 / ByteStreamMessageEncoder.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.ServiceModel.Channels { using System; using System.Xml; using System.ServiceModel.Diagnostics; class ByteStreamMessageEncoder : MessageEncoder { string maxReceivedMessageSizeExceededResourceString; string maxSentMessageSizeExceededResourceString; XmlDictionaryReaderQuotas quotas; public ByteStreamMessageEncoder(XmlDictionaryReaderQuotas quotas) { this.quotas = new XmlDictionaryReaderQuotas(); quotas.CopyTo(this.quotas); this.maxSentMessageSizeExceededResourceString = SR.MaxSentMessageSizeExceeded("{0}"); this.maxReceivedMessageSizeExceededResourceString = SR.MaxReceivedMessageSizeExceeded("{0}"); } 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(System.IO.Stream stream, int maxSizeOfHeaders, string contentType) { if (stream == null) { throw FxTrace.Exception.ArgumentNull("stream"); } Message message = new ByteStreamMessage(stream, this.quotas); message.Properties.Encoder = this; if (MessageLogger.LogMessagesAtTransportLevel) { MessageLogger.LogMessage(ref message, MessageLoggingSource.TransportReceive); } return message; } public override Message ReadMessage(ArraySegmentbuffer, BufferManager bufferManager, string contentType) { if (buffer == null) { throw FxTrace.Exception.ArgumentNull("buffer"); } if (bufferManager == null) { throw FxTrace.Exception.ArgumentNull("bufferManager"); } ByteStreamBufferedMessageData messageData = new ByteStreamBufferedMessageData(bufferManager, buffer.Count); Buffer.BlockCopy(buffer.Array, buffer.Offset, messageData.Buffer, 0, buffer.Count); Message message = new ByteStreamMessage(messageData, this.quotas); message.Properties.Encoder = this; if (MessageLogger.LogMessagesAtTransportLevel) { MessageLogger.LogMessage(ref message, MessageLoggingSource.TransportReceive); } return message; } public override void WriteMessage(Message message, System.IO.Stream stream) { if (message == null) { throw FxTrace.Exception.ArgumentNull("message"); } if (stream == null) { throw FxTrace.Exception.ArgumentNull("stream"); } ThrowIfMismatchedMessageVersion(message); message.Properties.Encoder = this; if (MessageLogger.LogMessagesAtTransportLevel) { MessageLogger.LogMessage(ref message, MessageLoggingSource.TransportSend); } using (XmlWriter writer = new XmlByteStreamWriter(stream, false)) { message.WriteMessage(writer); writer.Flush(); } } public override ArraySegment WriteMessage(Message message, int maxMessageSize, BufferManager bufferManager, int messageOffset) { if (message == null) { throw FxTrace.Exception.ArgumentNull("message"); } if (bufferManager == null) { throw FxTrace.Exception.ArgumentNull("bufferManager"); } if (maxMessageSize < 0) { throw FxTrace.Exception.ArgumentOutOfRange("maxMessageSize", maxMessageSize, SR.ArgumentOutOfMinRange(0)); } if (messageOffset < 0) { throw FxTrace.Exception.ArgumentOutOfRange("messageOffset", messageOffset, SR.ArgumentOutOfMinRange(0)); } ThrowIfMismatchedMessageVersion(message); message.Properties.Encoder = this; byte[] messageBuffer; int size; using (BufferManagerOutputStream stream = new BufferManagerOutputStream(maxSentMessageSizeExceededResourceString, 0, maxMessageSize, bufferManager)) { stream.Skip(messageOffset); using (XmlWriter writer = new XmlByteStreamWriter(stream, true)) { message.WriteMessage(writer); writer.Flush(); messageBuffer = stream.ToArray(out size); } } if (MessageLogger.LogMessagesAtTransportLevel) { ByteStreamBufferedMessageData messageData = new ByteStreamBufferedMessageData(bufferManager, size - messageOffset); using (XmlReader reader = new XmlBufferedByteStreamReader(messageData, this.quotas)) { MessageLogger.LogMessage(ref message, reader, MessageLoggingSource.TransportSend); } } return new ArraySegment (messageBuffer, messageOffset, size - messageOffset); } public override string ToString() { return ByteStreamMessageUtility.EncoderName; } } } // 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
- ListViewDeleteEventArgs.cs
- CanExecuteRoutedEventArgs.cs
- SqlVersion.cs
- ArgumentsParser.cs
- NavigationEventArgs.cs
- SafeRegistryHandle.cs
- ToolBarPanel.cs
- ThousandthOfEmRealPoints.cs
- Compiler.cs
- DataGridViewComboBoxColumn.cs
- Int16Converter.cs
- StringToken.cs
- XmlFormatExtensionPrefixAttribute.cs
- ToolStripRendererSwitcher.cs
- ApplicationServiceManager.cs
- Label.cs
- DbConnectionStringBuilder.cs
- PlainXmlWriter.cs
- SecurityDocument.cs
- NamespaceInfo.cs
- WebPartDisplayModeEventArgs.cs
- DetailsViewUpdatedEventArgs.cs
- ExpressionBuilder.cs
- ChildDocumentBlock.cs
- Byte.cs
- EditorZoneAutoFormat.cs
- ActivityDesignerLayoutSerializers.cs
- SchemaExporter.cs
- LinkedResource.cs
- HttpClientCertificate.cs
- ConcurrentQueue.cs
- ResourceExpression.cs
- PresentationTraceSources.cs
- CssStyleCollection.cs
- IProvider.cs
- PenThreadPool.cs
- SortableBindingList.cs
- SelectQueryOperator.cs
- ToolStripItemBehavior.cs
- RelativeSource.cs
- WebContext.cs
- AuthenticationSection.cs
- Serializer.cs
- _LocalDataStoreMgr.cs
- PropertyPushdownHelper.cs
- SqlConnectionHelper.cs
- XmlWhitespace.cs
- HTMLTagNameToTypeMapper.cs
- MetadataUtil.cs
- QueuedDeliveryRequirementsMode.cs
- AppSettingsExpressionBuilder.cs
- JsonCollectionDataContract.cs
- XsltLoader.cs
- DefaultTextStore.cs
- Version.cs
- StatusStrip.cs
- TableFieldsEditor.cs
- XsltFunctions.cs
- MenuScrollingVisibilityConverter.cs
- IntSumAggregationOperator.cs
- Menu.cs
- ProfileSettingsCollection.cs
- AuthenticationSection.cs
- VoiceObjectToken.cs
- BamlTreeMap.cs
- FixedSOMTable.cs
- RuntimeIdentifierPropertyAttribute.cs
- SweepDirectionValidation.cs
- DllNotFoundException.cs
- FixedDocumentSequencePaginator.cs
- System.Data_BID.cs
- SerializationInfoEnumerator.cs
- Util.cs
- ActivityFunc.cs
- WebPartTracker.cs
- AsynchronousChannelMergeEnumerator.cs
- BreakSafeBase.cs
- BindingCollection.cs
- XPathNavigatorReader.cs
- XmlElementList.cs
- XsdBuildProvider.cs
- DesignColumnCollection.cs
- GPPOINTF.cs
- AssemblyNameProxy.cs
- HashCryptoHandle.cs
- ServiceMemoryGates.cs
- ProtocolElement.cs
- OpenFileDialog.cs
- Popup.cs
- ReadOnlyTernaryTree.cs
- IndexingContentUnit.cs
- NodeInfo.cs
- PropertyKey.cs
- DataObjectPastingEventArgs.cs
- PageParser.cs
- ExpressionNormalizer.cs
- ComponentEditorPage.cs
- DataGridColumnsPage.cs
- LinkedList.cs
- SafeHandle.cs