Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Services / Web / System / Web / Services / Protocols / SoapMessage.cs / 1305376 / SoapMessage.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.Services.Protocols { using System.Web.Services; using System.Xml.Serialization; using System; using System.Reflection; using System.Collections; using System.IO; using System.ComponentModel; using System.Security.Permissions; using System.Runtime.InteropServices; using System.Diagnostics; using System.Web.Services.Diagnostics; ////// /// [PermissionSet(SecurityAction.InheritanceDemand, Name = "FullTrust")] public abstract class SoapMessage { SoapMessageStage stage; SoapHeaderCollection headers = new SoapHeaderCollection(); Stream stream; SoapExtensionStream extensionStream; string contentType; string contentEncoding; object[] parameterValues; SoapException exception; internal SoapMessage() { } internal void SetParameterValues(object[] parameterValues) { this.parameterValues = parameterValues; } internal object[] GetParameterValues() { return parameterValues; } ///[To be supplied.] ////// /// public abstract bool OneWay { get; } ///[To be supplied.] ////// /// public object GetInParameterValue(int index) { EnsureInStage(); EnsureNoException(); if (index < 0 || index >= parameterValues.Length) throw new IndexOutOfRangeException(Res.GetString(Res.indexMustBeBetweenAnd0Inclusive, parameterValues.Length)); return parameterValues[index]; } ///[To be supplied.] ////// /// public object GetOutParameterValue(int index) { EnsureOutStage(); EnsureNoException(); if (!MethodInfo.IsVoid) { if (index == int.MaxValue) throw new IndexOutOfRangeException(Res.GetString(Res.indexMustBeBetweenAnd0Inclusive, parameterValues.Length)); index++; } if (index < 0 || index >= parameterValues.Length) throw new IndexOutOfRangeException(Res.GetString(Res.indexMustBeBetweenAnd0Inclusive, parameterValues.Length)); return parameterValues[index]; } ///[To be supplied.] ////// /// public object GetReturnValue() { EnsureOutStage(); EnsureNoException(); if (MethodInfo.IsVoid) throw new InvalidOperationException(Res.GetString(Res.WebNoReturnValue)); return parameterValues[0]; } ///[To be supplied.] ////// /// protected abstract void EnsureOutStage(); ///[To be supplied.] ////// /// protected abstract void EnsureInStage(); void EnsureNoException() { if (exception != null) throw new InvalidOperationException(Res.GetString(Res.WebCannotAccessValue), exception); } ///[To be supplied.] ////// /// public SoapException Exception { get { return exception; } set { exception = value; } } ///[To be supplied.] ////// /// public abstract LogicalMethodInfo MethodInfo { get; } /* internal abstract SoapReflectedExtension[] Extensions { get; } internal abstract object[] ExtensionInitializers { get; } */ ///[To be supplied.] ////// /// protected void EnsureStage(SoapMessageStage stage) { if ((this.stage & stage) == 0) throw new InvalidOperationException(Res.GetString(Res.WebCannotAccessValueStage, this.stage.ToString())); } ///[To be supplied.] ////// /// public SoapHeaderCollection Headers { get { return headers; } } internal void SetStream(Stream stream) { if (extensionStream != null) { extensionStream.SetInnerStream(stream); extensionStream.SetStreamReady(); // The extension stream should now be referenced by either this.stream // or an extension that has chained it to another stream. extensionStream = null; } else this.stream = stream; } internal void SetExtensionStream(SoapExtensionStream extensionStream) { this.extensionStream = extensionStream; this.stream = extensionStream; } ///[To be supplied.] ////// /// public Stream Stream { get { return stream; } } ///[To be supplied.] ////// /// public string ContentType { get { EnsureStage(SoapMessageStage.BeforeSerialize | SoapMessageStage.BeforeDeserialize); return contentType; } set { EnsureStage(SoapMessageStage.BeforeSerialize | SoapMessageStage.BeforeDeserialize); contentType = value; } } ///[To be supplied.] ///public string ContentEncoding { get { EnsureStage(SoapMessageStage.BeforeSerialize | SoapMessageStage.BeforeDeserialize); return contentEncoding; } set { EnsureStage(SoapMessageStage.BeforeSerialize | SoapMessageStage.BeforeDeserialize); contentEncoding = value; } } /// /// /// public SoapMessageStage Stage { get { return stage; } } internal void SetStage(SoapMessageStage stage) { this.stage = stage; } ///[To be supplied.] ////// /// public abstract string Url { get; } ///[To be supplied.] ////// /// public abstract string Action { get; } ///[To be supplied.] ///[ComVisible(false)] [DefaultValue(SoapProtocolVersion.Default)] public virtual SoapProtocolVersion SoapVersion { get { return SoapProtocolVersion.Default; } } internal static SoapExtension[] InitializeExtensions(SoapReflectedExtension[] reflectedExtensions, object[] extensionInitializers) { if (reflectedExtensions == null) return null; SoapExtension[] extensions = new SoapExtension[reflectedExtensions.Length]; for (int i = 0; i < extensions.Length; i++) { extensions[i] = reflectedExtensions[i].CreateInstance(extensionInitializers[i]); } return extensions; } internal void InitExtensionStreamChain(SoapExtension[] extensions) { if (extensions == null) return; for (int i = 0; i < extensions.Length; i++) { stream = extensions[i].ChainStream(stream); } } internal void RunExtensions(SoapExtension[] extensions, bool throwOnException) { if (extensions == null) return; TraceMethod caller = Tracing.On ? new TraceMethod(this, "RunExtensions", extensions, throwOnException) : null; // Higher priority extensions (earlier in the list) run earlier for deserialization stages, // and later for serialization stages if ((stage & (SoapMessageStage.BeforeDeserialize | SoapMessageStage.AfterDeserialize)) != 0) { for (int i = 0; i < extensions.Length; i++) { if (Tracing.On) Tracing.Enter("SoapExtension", caller, new TraceMethod(extensions[i], "ProcessMessage", stage)); extensions[i].ProcessMessage(this); if (Tracing.On) Tracing.Exit("SoapExtension", caller); if (Exception != null) { if (throwOnException) throw Exception; if (Tracing.On) Tracing.ExceptionIgnore(TraceEventType.Warning, caller, Exception); } } } else { for (int i = extensions.Length - 1; i >= 0; i--) { if (Tracing.On) Tracing.Enter("SoapExtension", caller, new TraceMethod(extensions[i], "ProcessMessage", stage)); extensions[i].ProcessMessage(this); if (Tracing.On) Tracing.Exit("SoapExtension", caller); if (Exception != null) { if (throwOnException) throw Exception; if (Tracing.On) Tracing.ExceptionIgnore(TraceEventType.Warning, caller, Exception); } } } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ // // Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.Services.Protocols { using System.Web.Services; using System.Xml.Serialization; using System; using System.Reflection; using System.Collections; using System.IO; using System.ComponentModel; using System.Security.Permissions; using System.Runtime.InteropServices; using System.Diagnostics; using System.Web.Services.Diagnostics; ////// /// [PermissionSet(SecurityAction.InheritanceDemand, Name = "FullTrust")] public abstract class SoapMessage { SoapMessageStage stage; SoapHeaderCollection headers = new SoapHeaderCollection(); Stream stream; SoapExtensionStream extensionStream; string contentType; string contentEncoding; object[] parameterValues; SoapException exception; internal SoapMessage() { } internal void SetParameterValues(object[] parameterValues) { this.parameterValues = parameterValues; } internal object[] GetParameterValues() { return parameterValues; } ///[To be supplied.] ////// /// public abstract bool OneWay { get; } ///[To be supplied.] ////// /// public object GetInParameterValue(int index) { EnsureInStage(); EnsureNoException(); if (index < 0 || index >= parameterValues.Length) throw new IndexOutOfRangeException(Res.GetString(Res.indexMustBeBetweenAnd0Inclusive, parameterValues.Length)); return parameterValues[index]; } ///[To be supplied.] ////// /// public object GetOutParameterValue(int index) { EnsureOutStage(); EnsureNoException(); if (!MethodInfo.IsVoid) { if (index == int.MaxValue) throw new IndexOutOfRangeException(Res.GetString(Res.indexMustBeBetweenAnd0Inclusive, parameterValues.Length)); index++; } if (index < 0 || index >= parameterValues.Length) throw new IndexOutOfRangeException(Res.GetString(Res.indexMustBeBetweenAnd0Inclusive, parameterValues.Length)); return parameterValues[index]; } ///[To be supplied.] ////// /// public object GetReturnValue() { EnsureOutStage(); EnsureNoException(); if (MethodInfo.IsVoid) throw new InvalidOperationException(Res.GetString(Res.WebNoReturnValue)); return parameterValues[0]; } ///[To be supplied.] ////// /// protected abstract void EnsureOutStage(); ///[To be supplied.] ////// /// protected abstract void EnsureInStage(); void EnsureNoException() { if (exception != null) throw new InvalidOperationException(Res.GetString(Res.WebCannotAccessValue), exception); } ///[To be supplied.] ////// /// public SoapException Exception { get { return exception; } set { exception = value; } } ///[To be supplied.] ////// /// public abstract LogicalMethodInfo MethodInfo { get; } /* internal abstract SoapReflectedExtension[] Extensions { get; } internal abstract object[] ExtensionInitializers { get; } */ ///[To be supplied.] ////// /// protected void EnsureStage(SoapMessageStage stage) { if ((this.stage & stage) == 0) throw new InvalidOperationException(Res.GetString(Res.WebCannotAccessValueStage, this.stage.ToString())); } ///[To be supplied.] ////// /// public SoapHeaderCollection Headers { get { return headers; } } internal void SetStream(Stream stream) { if (extensionStream != null) { extensionStream.SetInnerStream(stream); extensionStream.SetStreamReady(); // The extension stream should now be referenced by either this.stream // or an extension that has chained it to another stream. extensionStream = null; } else this.stream = stream; } internal void SetExtensionStream(SoapExtensionStream extensionStream) { this.extensionStream = extensionStream; this.stream = extensionStream; } ///[To be supplied.] ////// /// public Stream Stream { get { return stream; } } ///[To be supplied.] ////// /// public string ContentType { get { EnsureStage(SoapMessageStage.BeforeSerialize | SoapMessageStage.BeforeDeserialize); return contentType; } set { EnsureStage(SoapMessageStage.BeforeSerialize | SoapMessageStage.BeforeDeserialize); contentType = value; } } ///[To be supplied.] ///public string ContentEncoding { get { EnsureStage(SoapMessageStage.BeforeSerialize | SoapMessageStage.BeforeDeserialize); return contentEncoding; } set { EnsureStage(SoapMessageStage.BeforeSerialize | SoapMessageStage.BeforeDeserialize); contentEncoding = value; } } /// /// /// public SoapMessageStage Stage { get { return stage; } } internal void SetStage(SoapMessageStage stage) { this.stage = stage; } ///[To be supplied.] ////// /// public abstract string Url { get; } ///[To be supplied.] ////// /// public abstract string Action { get; } ///[To be supplied.] ///[ComVisible(false)] [DefaultValue(SoapProtocolVersion.Default)] public virtual SoapProtocolVersion SoapVersion { get { return SoapProtocolVersion.Default; } } internal static SoapExtension[] InitializeExtensions(SoapReflectedExtension[] reflectedExtensions, object[] extensionInitializers) { if (reflectedExtensions == null) return null; SoapExtension[] extensions = new SoapExtension[reflectedExtensions.Length]; for (int i = 0; i < extensions.Length; i++) { extensions[i] = reflectedExtensions[i].CreateInstance(extensionInitializers[i]); } return extensions; } internal void InitExtensionStreamChain(SoapExtension[] extensions) { if (extensions == null) return; for (int i = 0; i < extensions.Length; i++) { stream = extensions[i].ChainStream(stream); } } internal void RunExtensions(SoapExtension[] extensions, bool throwOnException) { if (extensions == null) return; TraceMethod caller = Tracing.On ? new TraceMethod(this, "RunExtensions", extensions, throwOnException) : null; // Higher priority extensions (earlier in the list) run earlier for deserialization stages, // and later for serialization stages if ((stage & (SoapMessageStage.BeforeDeserialize | SoapMessageStage.AfterDeserialize)) != 0) { for (int i = 0; i < extensions.Length; i++) { if (Tracing.On) Tracing.Enter("SoapExtension", caller, new TraceMethod(extensions[i], "ProcessMessage", stage)); extensions[i].ProcessMessage(this); if (Tracing.On) Tracing.Exit("SoapExtension", caller); if (Exception != null) { if (throwOnException) throw Exception; if (Tracing.On) Tracing.ExceptionIgnore(TraceEventType.Warning, caller, Exception); } } } else { for (int i = extensions.Length - 1; i >= 0; i--) { if (Tracing.On) Tracing.Enter("SoapExtension", caller, new TraceMethod(extensions[i], "ProcessMessage", stage)); extensions[i].ProcessMessage(this); if (Tracing.On) Tracing.Exit("SoapExtension", caller); if (Exception != null) { if (throwOnException) throw Exception; if (Tracing.On) Tracing.ExceptionIgnore(TraceEventType.Warning, caller, Exception); } } } } } } // 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
- DownloadProgressEventArgs.cs
- SafeLibraryHandle.cs
- StagingAreaInputItem.cs
- QualificationDataAttribute.cs
- WmfPlaceableFileHeader.cs
- EpmSyndicationContentSerializer.cs
- ObjectView.cs
- basecomparevalidator.cs
- QilName.cs
- BrushMappingModeValidation.cs
- WindowsTab.cs
- TypeConverterAttribute.cs
- CatalogZoneBase.cs
- XmlParserContext.cs
- JavaScriptSerializer.cs
- DataReceivedEventArgs.cs
- DynamicFilterExpression.cs
- ServiceDescriptions.cs
- ArraySegment.cs
- ExceptionRoutedEventArgs.cs
- XmlSchemaAnyAttribute.cs
- WsdlInspector.cs
- SqlFactory.cs
- BuildProviderCollection.cs
- XmlSchemaImporter.cs
- EmptyTextWriter.cs
- DbParameterCollection.cs
- ProfilePropertyMetadata.cs
- SqlBuffer.cs
- PointLightBase.cs
- ElementHost.cs
- SimpleHandlerFactory.cs
- InertiaExpansionBehavior.cs
- KeySplineConverter.cs
- BufferedGraphics.cs
- FigureHelper.cs
- HybridDictionary.cs
- DelimitedListTraceListener.cs
- MsmqInputChannel.cs
- TextPointerBase.cs
- ImageMapEventArgs.cs
- securitycriticaldata.cs
- ImportContext.cs
- OpCellTreeNode.cs
- PointF.cs
- EnumValidator.cs
- Wow64ConfigurationLoader.cs
- DesignerActionHeaderItem.cs
- PaintValueEventArgs.cs
- AssertFilter.cs
- ListDataHelper.cs
- UnaryExpression.cs
- LinqExpressionNormalizer.cs
- RegexCaptureCollection.cs
- DataServiceQuery.cs
- WebPartRestoreVerb.cs
- ActivationArguments.cs
- DuplexChannelFactory.cs
- ExternalFile.cs
- Transform3DCollection.cs
- IgnoreDeviceFilterElementCollection.cs
- StringValidatorAttribute.cs
- PersonalizationProviderHelper.cs
- XPathDescendantIterator.cs
- RadioButtonStandardAdapter.cs
- SafeFileHandle.cs
- DbParameterHelper.cs
- SplayTreeNode.cs
- GeometryHitTestParameters.cs
- WebPartMinimizeVerb.cs
- DataGridViewAccessibleObject.cs
- EncodingNLS.cs
- WizardPanelChangingEventArgs.cs
- AutomationTextAttribute.cs
- RuleInfoComparer.cs
- DurableInstance.cs
- RoutedEvent.cs
- PtsHelper.cs
- DictionaryKeyPropertyAttribute.cs
- SqlGatherConsumedAliases.cs
- InstallerTypeAttribute.cs
- ContentFilePart.cs
- Utils.cs
- FormsAuthenticationModule.cs
- FrugalList.cs
- OpenFileDialog.cs
- ZoneButton.cs
- IntSecurity.cs
- ServiceBehaviorElement.cs
- Interfaces.cs
- TextTreeUndoUnit.cs
- TextEditorTyping.cs
- TableItemPattern.cs
- DrawingBrush.cs
- DesignerHelpers.cs
- PackWebRequest.cs
- DataGridViewComboBoxEditingControl.cs
- XhtmlBasicPanelAdapter.cs
- SkinBuilder.cs