Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx35 / System.ServiceModel.Web / System / ServiceModel / Channels / WebScriptMetadataMessageEncoderFactory.cs / 1305376 / WebScriptMetadataMessageEncoderFactory.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.ServiceModel.Channels { using System.Globalization; using System.IO; using System.Net.Mime; using System.ServiceModel.Diagnostics; using System.Text; using System.Xml; class WebScriptMetadataMessageEncoderFactory : MessageEncoderFactory { const string applicationJavaScriptMediaType = "application/x-javascript"; WebScriptMetadataMessageEncoder messageEncoder; public WebScriptMetadataMessageEncoderFactory(XmlDictionaryReaderQuotas quotas) { messageEncoder = new WebScriptMetadataMessageEncoder(quotas); } public override MessageEncoder Encoder { get { return messageEncoder; } } public override MessageVersion MessageVersion { get { return messageEncoder.MessageVersion; } } class WebScriptMetadataMessageEncoder : MessageEncoder { static UTF8Encoding UTF8EncodingWithoutByteOrderMark = new UTF8Encoding(false); string contentType; MessageEncoder innerReadMessageEncoder; string mediaType; XmlDictionaryReaderQuotas readerQuotas; public WebScriptMetadataMessageEncoder(XmlDictionaryReaderQuotas quotas) { this.readerQuotas = new XmlDictionaryReaderQuotas(); quotas.CopyTo(this.readerQuotas); this.mediaType = this.contentType = applicationJavaScriptMediaType; this.innerReadMessageEncoder = new TextMessageEncodingBindingElement(MessageVersion.None, Encoding.UTF8).CreateMessageEncoderFactory().Encoder; } public override string ContentType { get { return contentType; } } public override string MediaType { get { return mediaType; } } public override MessageVersion MessageVersion { get { return MessageVersion.None; } } public override bool IsContentTypeSupported(string contentType) { return innerReadMessageEncoder.IsContentTypeSupported(contentType); } public override Message ReadMessage(ArraySegmentbuffer, BufferManager bufferManager, string contentType) { return innerReadMessageEncoder.ReadMessage(buffer, bufferManager, contentType); } public override Message ReadMessage(Stream stream, int maxSizeOfHeaders, string contentType) { return innerReadMessageEncoder.ReadMessage(stream, maxSizeOfHeaders, contentType); } public override ArraySegment WriteMessage(Message message, int maxMessageSize, BufferManager bufferManager, int messageOffset) { if (message == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("message")); } if (bufferManager == null) { throw TraceUtility.ThrowHelperError(new ArgumentNullException("bufferManager"), message); } if (maxMessageSize < 0) { throw TraceUtility.ThrowHelperError(new ArgumentOutOfRangeException("maxMessageSize", maxMessageSize, SR2.GetString(SR2.ValueMustBeNonNegative)), message); } if (messageOffset < 0 || messageOffset > maxMessageSize) { throw TraceUtility.ThrowHelperError(new ArgumentOutOfRangeException("messageOffset", messageOffset, SR2.GetString(SR2.JsonValueMustBeInRange, 0, maxMessageSize)), message); } ThrowIfMismatchedMessageVersion(message); message.Properties.Encoder = this; BufferedMessageWriter messageWriter = new WebScriptMetadataBufferedMessageWriter(this); ArraySegment messageData = messageWriter.WriteMessage(message, bufferManager, messageOffset, maxMessageSize); if (MessageLogger.LogMessagesAtTransportLevel) { MessageLogger.LogMessage(ref message, MessageLoggingSource.TransportSend); } return messageData; } public override void WriteMessage(Message message, Stream stream) { if (message == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("message")); } if (stream == null) { throw TraceUtility.ThrowHelperError(new ArgumentNullException("stream"), message); } ThrowIfMismatchedMessageVersion(message); message.Properties.Encoder = this; XmlDictionaryWriter xmlWriter = CreateWriter(stream); xmlWriter.WriteStartDocument(); message.WriteMessage(xmlWriter); xmlWriter.WriteEndDocument(); xmlWriter.Flush(); xmlWriter.Close(); if (MessageLogger.LogMessagesAtTransportLevel) { MessageLogger.LogMessage(ref message, MessageLoggingSource.TransportSend); } } XmlDictionaryWriter CreateWriter(Stream stream) { XmlWriterSettings settings = new XmlWriterSettings(); settings.OmitXmlDeclaration = true; settings.Encoding = UTF8EncodingWithoutByteOrderMark; XmlWriter writer = XmlWriter.Create(stream, settings); return XmlDictionaryWriter.CreateDictionaryWriter(writer); } class WebScriptMetadataBufferedMessageWriter : BufferedMessageWriter { WebScriptMetadataMessageEncoder messageEncoder; public WebScriptMetadataBufferedMessageWriter(WebScriptMetadataMessageEncoder messageEncoder) { this.messageEncoder = messageEncoder; } protected override void OnWriteEndMessage(XmlDictionaryWriter writer) { } protected override void OnWriteStartMessage(XmlDictionaryWriter writer) { } protected override void ReturnXmlWriter(XmlDictionaryWriter writer) { writer.Close(); } protected override XmlDictionaryWriter TakeXmlWriter(Stream stream) { return messageEncoder.CreateWriter(stream); } } } } } // 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
- TimelineCollection.cs
- UnsafeNativeMethodsMilCoreApi.cs
- FormConverter.cs
- UiaCoreApi.cs
- GridEntry.cs
- Property.cs
- Schedule.cs
- RemotingAttributes.cs
- WindowProviderWrapper.cs
- Misc.cs
- MailMessageEventArgs.cs
- Point3DKeyFrameCollection.cs
- FilterElement.cs
- ByteStreamMessageEncoderFactory.cs
- AccessControlEntry.cs
- XappLauncher.cs
- DynamicILGenerator.cs
- SemaphoreSecurity.cs
- Int16Animation.cs
- SizeAnimationBase.cs
- AuthenticationManager.cs
- ConfigXmlText.cs
- clipboard.cs
- WebBrowserUriTypeConverter.cs
- OrderByBuilder.cs
- TemplatedAdorner.cs
- PackagePartCollection.cs
- FixedSOMFixedBlock.cs
- XmlCollation.cs
- UiaCoreTypesApi.cs
- TextContainerHelper.cs
- SpellerInterop.cs
- UIElementParagraph.cs
- Frame.cs
- PrinterUnitConvert.cs
- ClosableStream.cs
- MenuEventArgs.cs
- WebPartCloseVerb.cs
- IriParsingElement.cs
- SpeechDetectedEventArgs.cs
- DesignerActionUIStateChangeEventArgs.cs
- ProtectedProviderSettings.cs
- _LocalDataStoreMgr.cs
- InlineCategoriesDocument.cs
- SpellerError.cs
- MarkupProperty.cs
- OdbcFactory.cs
- BehaviorEditorPart.cs
- UxThemeWrapper.cs
- RegexStringValidatorAttribute.cs
- RoutedCommand.cs
- NavigatingCancelEventArgs.cs
- ControlCollection.cs
- MarshalByRefObject.cs
- AuthenticationSection.cs
- DbParameterCollection.cs
- HostedHttpRequestAsyncResult.cs
- DataMisalignedException.cs
- ObjectStateEntryDbUpdatableDataRecord.cs
- PublisherIdentityPermission.cs
- WindowsGraphics.cs
- DataTemplate.cs
- SqlDataAdapter.cs
- ArgIterator.cs
- SecurityBindingElementImporter.cs
- BrowserTree.cs
- AsnEncodedData.cs
- XmlSerializerAssemblyAttribute.cs
- MachineKeySection.cs
- WebPartTransformer.cs
- TCPClient.cs
- ServerIdentity.cs
- StringHandle.cs
- AssociationEndMember.cs
- FrameworkPropertyMetadata.cs
- SqlUserDefinedTypeAttribute.cs
- MetabaseServerConfig.cs
- GeneralTransform3DTo2DTo3D.cs
- ProgramPublisher.cs
- NullReferenceException.cs
- EntityWithKeyStrategy.cs
- DataAccessException.cs
- PropertiesTab.cs
- DataGridViewDataErrorEventArgs.cs
- ComplexBindingPropertiesAttribute.cs
- PolyBezierSegment.cs
- PackageRelationshipSelector.cs
- ProcessManager.cs
- CalendarTable.cs
- ContentTextAutomationPeer.cs
- DbSourceCommand.cs
- TextBoxAutomationPeer.cs
- ComboBoxItem.cs
- FontDifferentiator.cs
- AspCompat.cs
- FatalException.cs
- FormViewDeleteEventArgs.cs
- ExclusiveNamedPipeTransportManager.cs
- HealthMonitoringSection.cs
- MatrixKeyFrameCollection.cs