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
- WindowsFormsSectionHandler.cs
- AdapterDictionary.cs
- GridLength.cs
- ConnectionsZone.cs
- DataSourceControl.cs
- QilScopedVisitor.cs
- DynamicControlParameter.cs
- ViewEventArgs.cs
- GridView.cs
- XmlSchemaException.cs
- SequentialOutput.cs
- ConfigurationPropertyAttribute.cs
- DataViewSettingCollection.cs
- CollectionViewSource.cs
- PerformanceCounterLib.cs
- DataObjectSettingDataEventArgs.cs
- GradientBrush.cs
- TogglePatternIdentifiers.cs
- PageContentAsyncResult.cs
- EdmError.cs
- SqlCacheDependencyDatabaseCollection.cs
- HebrewCalendar.cs
- TextEditorSpelling.cs
- EventLogPermissionEntry.cs
- MasterPageCodeDomTreeGenerator.cs
- CSharpCodeProvider.cs
- ToolboxDataAttribute.cs
- RenderCapability.cs
- WebServiceMethodData.cs
- DataControlFieldsEditor.cs
- LinqDataSourceEditData.cs
- MsmqElementBase.cs
- PropertyToken.cs
- List.cs
- LinqDataSourceContextEventArgs.cs
- QilSortKey.cs
- DSASignatureFormatter.cs
- GcSettings.cs
- CompilerGeneratedAttribute.cs
- SqlDataAdapter.cs
- TTSEngineTypes.cs
- FailedToStartupUIException.cs
- SoapAttributes.cs
- X509CertificateStore.cs
- WebPartMovingEventArgs.cs
- BinaryMethodMessage.cs
- CaretElement.cs
- DropDownButton.cs
- FilterException.cs
- HitTestResult.cs
- ActivityExecutionContextCollection.cs
- XmlSerializerAssemblyAttribute.cs
- MulticastDelegate.cs
- CompareValidator.cs
- UidPropertyAttribute.cs
- TreeView.cs
- TraceSource.cs
- EncoderParameter.cs
- StaticResourceExtension.cs
- GroupByQueryOperator.cs
- DocumentPaginator.cs
- RequestCacheManager.cs
- PeerObject.cs
- JournalEntryStack.cs
- XhtmlBasicValidatorAdapter.cs
- AsnEncodedData.cs
- NullableFloatSumAggregationOperator.cs
- TextDecoration.cs
- EncryptedPackage.cs
- AutoGeneratedFieldProperties.cs
- EmptyStringExpandableObjectConverter.cs
- RelationshipSet.cs
- CodeNamespace.cs
- TextServicesDisplayAttribute.cs
- LinkArea.cs
- ScriptControlManager.cs
- CheckBoxBaseAdapter.cs
- tooltip.cs
- ValidatedControlConverter.cs
- WebPartDescription.cs
- ProviderBase.cs
- DebugView.cs
- ConfigurationFileMap.cs
- BooleanFunctions.cs
- ResourceKey.cs
- AuthenticationServiceManager.cs
- TaskExtensions.cs
- LoginView.cs
- DBSqlParser.cs
- TypeUtils.cs
- DoubleKeyFrameCollection.cs
- Interlocked.cs
- ConfigurationStrings.cs
- XmlNodeChangedEventArgs.cs
- ContextMenuService.cs
- _HTTPDateParse.cs
- ActiveXContainer.cs
- DesignerSerializerAttribute.cs
- HttpListenerRequest.cs
- TextElementEnumerator.cs