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
- XmlILIndex.cs
- DesignerDataSchemaClass.cs
- WaitingCursor.cs
- OutputCache.cs
- BamlLocalizerErrorNotifyEventArgs.cs
- ApplicationDirectoryMembershipCondition.cs
- DataSourceSelectArguments.cs
- SystemIcmpV4Statistics.cs
- Helper.cs
- MailMessage.cs
- ListControlDesigner.cs
- TargetFrameworkUtil.cs
- XmlSchemaObjectTable.cs
- SqlMethodAttribute.cs
- ProxyWebPartManager.cs
- MailMessageEventArgs.cs
- ObjectConverter.cs
- HtmlLiteralTextAdapter.cs
- RuntimeUtils.cs
- WebPartDeleteVerb.cs
- RequestChannel.cs
- XmlNullResolver.cs
- ToolBarPanel.cs
- FontUnitConverter.cs
- StorageEntityContainerMapping.cs
- RegistryKey.cs
- AppDomainUnloadedException.cs
- SettingsPropertyWrongTypeException.cs
- ResetableIterator.cs
- DataGridViewCellPaintingEventArgs.cs
- ThreadAbortException.cs
- AsyncPostBackTrigger.cs
- HttpStaticObjectsCollectionWrapper.cs
- ZoneIdentityPermission.cs
- UpdateProgress.cs
- PartialCachingAttribute.cs
- BuiltInExpr.cs
- DataMemberListEditor.cs
- CharacterMetrics.cs
- DbReferenceCollection.cs
- MessagePropertyFilter.cs
- DataControlFieldCell.cs
- UseManagedPresentationBindingElement.cs
- RsaKeyIdentifierClause.cs
- EdmType.cs
- FieldNameLookup.cs
- DataRecord.cs
- NavigationFailedEventArgs.cs
- SecurityPolicySection.cs
- AccessibilityHelperForVista.cs
- ISFClipboardData.cs
- GradientBrush.cs
- RijndaelManagedTransform.cs
- ArraySegment.cs
- CodeDefaultValueExpression.cs
- AssociationSetMetadata.cs
- RequiredFieldValidator.cs
- MultiViewDesigner.cs
- ConnectionPointGlyph.cs
- BindableTemplateBuilder.cs
- XamlPathDataSerializer.cs
- QfeChecker.cs
- ISAPIWorkerRequest.cs
- TextTrailingCharacterEllipsis.cs
- DeleteIndexBinder.cs
- StrokeNodeOperations2.cs
- GenericParameterDataContract.cs
- SystemEvents.cs
- SHA384Managed.cs
- ObjectDataSourceChooseMethodsPanel.cs
- DynamicObjectAccessor.cs
- WebEvents.cs
- MSAAEventDispatcher.cs
- odbcmetadatacollectionnames.cs
- HttpConfigurationContext.cs
- FormsAuthenticationUserCollection.cs
- UDPClient.cs
- OdbcError.cs
- OutputCacheSettingsSection.cs
- TemplateLookupAction.cs
- PathTooLongException.cs
- PenCursorManager.cs
- DockPanel.cs
- XPathDocumentIterator.cs
- Pool.cs
- Underline.cs
- HttpModulesSection.cs
- OleDbConnectionPoolGroupProviderInfo.cs
- CompilationUtil.cs
- NamedPipeTransportManager.cs
- JsonEnumDataContract.cs
- MenuBase.cs
- DataGridColumnEventArgs.cs
- ValueTable.cs
- Unit.cs
- DbProviderFactories.cs
- HashCoreRequest.cs
- ColorAnimation.cs
- SmtpClient.cs
- ListItemsPage.cs