//---------------------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //---------------------------------------------------------------------------- namespace System.ServiceModel.Activation { using System; using System.Net; using System.ServiceModel; using System.ServiceModel.Channels; [ServiceContract(SessionMode = SessionMode.Required, CallbackContract = typeof(IConnectionDuplicator))] interface IConnectionRegister { [OperationContract(IsOneWay = false, IsInitiating = true)] ListenerExceptionStatus Register(Version version, int pid, BaseUriWithWildcard path, int queueId, Guid token, string eventName); [OperationContract] bool ValidateUriRoute(Uri uri, IPAddress address, int port); [OperationContract] void Unregister(); } //Used on the client side (e.g. inside WebHost) to add async support to validate the Uri without blocking IO threads to improve scalability. [ServiceContract(SessionMode = SessionMode.Required, CallbackContract = typeof(IConnectionDuplicator))] interface IConnectionRegisterAsync : IConnectionRegister { [OperationContract(AsyncPattern = true, Action = "http://tempuri.org/IConnectionRegister/ValidateUriRoute", ReplyAction = "http://tempuri.org/IConnectionRegister/ValidateUriRouteResponse")] IAsyncResult BeginValidateUriRoute(System.Uri uri, IPAddress address, int port, AsyncCallback callback, object asyncState); bool EndValidateUriRoute(System.IAsyncResult result); } }