/// <summary> /// 获取指定服务契约类型的所有通道连接 /// </summary> /// <typeparam name="TContract">服务契约类型</typeparam> /// <returns>指定服务契约类型的所有通道连接</returns> public IList <TContract> GetChannels <TContract>() where TContract : class { List <TContract> list = new List <TContract>(); IList <ServiceEndpoint> endpoints = EndpointProvider.GetEndpoints <TContract>(); List <IProxyChannelManager <TContract> > channelManagerList = new List <IProxyChannelManager <TContract> >(); List <ServiceEndpoint> channelExistEndpoints = new List <ServiceEndpoint>(); List <object> proxyChannelManagers = new List <object>(_proxyChannelManagerContainer.Values); foreach (var item in proxyChannelManagers) { if (item is ProxyChannelManager <TContract> ) { IProxyChannelManager <TContract> channelManager = item as IProxyChannelManager <TContract>; if (channelManager != null) { channelManagerList.Add(channelManager); foreach (ServiceEndpoint endpoint in endpoints) { if (endpoint.Address.Uri.Host == channelManager.ContractInfo.HostName) { channelExistEndpoints.Add(endpoint); break; } } } } } foreach (ServiceEndpoint endpoint in channelExistEndpoints) { endpoints.Remove(endpoint); } if (endpoints.Count > 0) { // create proxy channel manager for those endpoints who have not been created foreach (ServiceEndpoint endpoint in endpoints) { ContractInfo contract = new ContractInfo(typeof(TContract), endpoint.Address.Uri.Host); IProxyChannelManager <TContract> proxyChannelManager = GetProxyChannelManager <TContract>(contract.Key); if (proxyChannelManager == null) { lock (_proxyChannelManagerContainerLocker) { proxyChannelManager = GetProxyChannelManager <TContract>(contract.Key); if (proxyChannelManager == null) { proxyChannelManager = ProxyChannelManagerFactory.Create <TContract>(contract); RegisterProxyChannelManager(proxyChannelManager, contract.Key); } } } if (proxyChannelManager != null) { channelManagerList.Add(proxyChannelManager); } } } foreach (ProxyChannelManager <TContract> channelManager in channelManagerList) { list.Add(channelManager.GetChannel()); } return(list); }
public SpotifyApiService(IHttpService httpService, ITokenReaderService tokenService, EndpointProvider endpointProvider, SerialisationSettingsProvider serialisationSettingsProvider) { HttpService = httpService; TokenService = tokenService; EndpointProvider = endpointProvider; SerialisationSettingsProvider = serialisationSettingsProvider; }
public UserService(IHttpService httpService, ITokenReaderService tokenService, EndpointProvider endpointProvider, SerialisationSettingsProvider serialisationSettingsProvider) : base(httpService, tokenService, endpointProvider, serialisationSettingsProvider) { }
public void ValidateEndpointOnAsyncPostfix(string server, string expectedResult) { EndpointProvider endpointProvider = new EndpointProvider(new BoltOptions { Prefix = "test" }); Assert.Equal<string>(expectedResult, endpointProvider.GetEndpoint(new Uri(server), GetType(), MethodAsyncInfo).ToString()); }
public SignalRController(EndpointProvider endpointProvider, TokenProvider tokenProvider) { _endpointProvider = endpointProvider; _tokenProvider = tokenProvider; }
public static string GetLoginEndpoint() { return(EndpointProvider.Login()); }
public static string GetProdutsEndpoint() { return(EndpointProvider.Products()); }
public static string GetUsersEndpoint() { return(EndpointProvider.Users()); }