Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Security / ReceiveMessageAndVerifySecurityAsyncResultBase.cs / 1 / ReceiveMessageAndVerifySecurityAsyncResultBase.cs
//---------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.ServiceModel.Security { using System.Runtime.InteropServices; using System.ServiceModel.Channels; abstract class ReceiveMessageAndVerifySecurityAsyncResultBase : AsyncResult { static AsyncCallback innerTryReceiveCompletedCallback = DiagnosticUtility.ThunkAsyncCallback(new AsyncCallback(InnerTryReceiveCompletedCallback)); Message message; bool receiveCompleted; TimeoutHelper timeoutHelper; IInputChannel innerChannel; protected ReceiveMessageAndVerifySecurityAsyncResultBase(IInputChannel innerChannel, TimeSpan timeout, AsyncCallback callback, object state) : base(callback, state) { this.timeoutHelper = new TimeoutHelper(timeout); this.innerChannel = innerChannel; } public void Start() { IAsyncResult asyncResult = innerChannel.BeginTryReceive(this.timeoutHelper.RemainingTime(), innerTryReceiveCompletedCallback, this); if (!asyncResult.CompletedSynchronously) { return; } bool innerReceiveCompleted = innerChannel.EndTryReceive(asyncResult, out this.message); if (!innerReceiveCompleted) { receiveCompleted = false; } else { receiveCompleted = true; bool completedSynchronously = this.OnInnerReceiveDone(ref this.message, this.timeoutHelper.RemainingTime()); if (!completedSynchronously) { return; } } Complete(true); } static void InnerTryReceiveCompletedCallback(IAsyncResult result) { if (result.CompletedSynchronously) { return; } ReceiveMessageAndVerifySecurityAsyncResultBase thisResult = (ReceiveMessageAndVerifySecurityAsyncResultBase)result.AsyncState; Exception completionException = null; bool completeSelf = false; try { bool innerReceiveCompleted = thisResult.innerChannel.EndTryReceive(result, out thisResult.message); if (!innerReceiveCompleted) { thisResult.receiveCompleted = false; completeSelf = true; } else { thisResult.receiveCompleted = true; completeSelf = thisResult.OnInnerReceiveDone(ref thisResult.message, thisResult.timeoutHelper.RemainingTime()); } } #pragma warning suppress 56500 // covered by FxCOP catch (Exception e) { if (Diagnostics.ExceptionUtility.IsFatal(e)) throw; completeSelf = true; completionException = e; } if (completeSelf) { thisResult.Complete(false, completionException); } } protected abstract bool OnInnerReceiveDone(ref Message message, TimeSpan timeout); public static bool End(IAsyncResult result, out Message message) { ReceiveMessageAndVerifySecurityAsyncResultBase thisResult = AsyncResult.End(result); message = thisResult.message; return thisResult.receiveCompleted; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- FileDialog.cs
- NavigationPropertyEmitter.cs
- ContractInstanceProvider.cs
- ParameterDataSourceExpression.cs
- __Filters.cs
- MappingMetadataHelper.cs
- XmlSecureResolver.cs
- DesignerCapabilities.cs
- ObjectSecurity.cs
- DataGridSortCommandEventArgs.cs
- XPathNavigatorKeyComparer.cs
- UMPAttributes.cs
- SocketElement.cs
- ConfigXmlDocument.cs
- CodeTypeDeclaration.cs
- TemplateNameScope.cs
- CompleteWizardStep.cs
- ProcessHostMapPath.cs
- DiscoveryVersionConverter.cs
- Visitors.cs
- FileUpload.cs
- AutoResetEvent.cs
- WorkflowApplicationAbortedEventArgs.cs
- DoubleCollection.cs
- ApplicationHost.cs
- TextSelectionProcessor.cs
- DBConcurrencyException.cs
- PreviewPrintController.cs
- AppSettingsReader.cs
- VectorAnimation.cs
- Parsers.cs
- MediaTimeline.cs
- RelationshipConstraintValidator.cs
- NativeCppClassAttribute.cs
- NGCSerializer.cs
- ToolStrip.cs
- DriveInfo.cs
- MulticastIPAddressInformationCollection.cs
- KnownColorTable.cs
- Cursors.cs
- TraceData.cs
- Int32CollectionConverter.cs
- SortedList.cs
- EventProxy.cs
- RadialGradientBrush.cs
- srgsitem.cs
- JsonReader.cs
- InteropBitmapSource.cs
- XmlNotation.cs
- MinimizableAttributeTypeConverter.cs
- TypeUsageBuilder.cs
- Socket.cs
- Select.cs
- DeploymentSectionCache.cs
- namescope.cs
- SoapHeader.cs
- LinqDataSource.cs
- PathSegmentCollection.cs
- EmbeddedMailObjectsCollection.cs
- TargetInvocationException.cs
- TheQuery.cs
- ToolStripProfessionalLowResolutionRenderer.cs
- SiteMapPath.cs
- SqlRowUpdatedEvent.cs
- DBDataPermission.cs
- WmfPlaceableFileHeader.cs
- IsolatedStorageFileStream.cs
- TextMetrics.cs
- EdmComplexTypeAttribute.cs
- DataServiceContext.cs
- DayRenderEvent.cs
- XmlAttributeOverrides.cs
- Accessible.cs
- TemplateGroupCollection.cs
- ComplexPropertyEntry.cs
- GeometryModel3D.cs
- EntityWithChangeTrackerStrategy.cs
- SpellerInterop.cs
- DateTimeUtil.cs
- CustomSignedXml.cs
- FontFamilyIdentifier.cs
- SimpleWebHandlerParser.cs
- Cursors.cs
- DataGridViewCellStateChangedEventArgs.cs
- InlinedAggregationOperator.cs
- SmtpClient.cs
- MappedMetaModel.cs
- ColumnResult.cs
- Hashtable.cs
- JumpTask.cs
- Section.cs
- ProfessionalColors.cs
- COM2IProvidePropertyBuilderHandler.cs
- SqlNodeAnnotation.cs
- TextModifier.cs
- ActivityDesignerAccessibleObject.cs
- XmlQueryOutput.cs
- StylusPointCollection.cs
- CancelEventArgs.cs
- RbTree.cs