public async Task <IReadOnlyCollection <DiscoveredService> > DiscoverAsync(ServiceDiscoveryQuery query, bool online = false) { var channel = await _transportConnection.CreateChannelAsync().ConfigureAwait(false); try { using (var msg = _protocol.MessageFactory .CreateServiceDiscoveryRequest( Convert(query.ConsumedService), online ? DiscoveryMode.Online : DiscoveryMode.Offline)) { var serializedRequest = _protocol.Serializer.Serialize(msg); await channel.Out.WriteOrDisposeAsync(new TransportMessageFrame(serializedRequest)).ConfigureAwait(false); channel.Out.TryComplete(); using (var serializedResponse = (await channel.In.ReadAsync().ConfigureAwait(false)).Payload) { var discoveryResponse = _protocol.Serializer.DeserializeServiceDiscoveryResponse(serializedResponse); return(Convert(discoveryResponse)); } } } catch (Exception ex) { channel.Out.TryTerminate(ex); throw; } finally { await channel.Completion.ConfigureAwait(false); } }
private async Task <IReadOnlyCollection <DiscoveredService> > DiscoverInternalAsync( ServiceDiscoveryQuery query, bool online = false) { _log.Debug("Service discovery {0}", query); var task = _discoveryService.DiscoverAsync(query, online); _runningTasks[task] = Nothing.Instance; ((Task)task).ContinueWithSynchronously((Action <Task>)OnTaskCompleted).IgnoreAwait(); var response = await task.ConfigureAwait(false); _log.Debug("Service discovery response: {0}", response.FormatEnumerable()); return(response); }
private Task <IReadOnlyCollection <DiscoveredService> > DiscoverInternalAsync( ServiceDiscoveryQuery query, bool online = false) { var task = TaskRunner.RunInBackground(async() => { _log.Debug("Service discovery {0}", query); var response = await _discoveryService.DiscoverAsync(query, online).ConfigureAwait(false); _log.Debug("Service discovery response: {0}", response); return(response); }); _runningTasks[task] = Nothing.Instance; ((Task)task).ContinueWithSynchronously((Action <Task>)OnTaskCompleted); return(task); }
private async Task WhenUserGetInformationAboutService(string serviceId) { var serviceQuery = new ServiceDiscoveryQuery(); _service = await serviceQuery.GetServiceAsync(new ServerOptions { Address = "http://127.0.0.1:8500" }, serviceId); }
public async Task <IReadOnlyCollection <DiscoveredOnlineService> > DiscoverOnlineAsync(ServiceDiscoveryQuery query) { var discoveryResults = await DiscoverInternalAsync(query, true).ConfigureAwait(false); return(discoveryResults.Select(x => new DiscoveredOnlineService(x)).ToList()); }
public async Task <IReadOnlyCollection <DiscoveredService> > DiscoverAsync(ServiceDiscoveryQuery query) { return(await DiscoverInternalAsync(query).ConfigureAwait(false)); }
private async Task WhenUserGetInformationAboutServicesWithTag(string tag) { var serviceQuery = new ServiceDiscoveryQuery(); _services = await serviceQuery.GetServicesAsync(new ServerOptions { Address = "http://127.0.0.1:8500" }, new string[] { tag }); }
public async Task <IReadOnlyCollection <DiscoveredOnlineService> > DiscoverInSpecificContextAsync(ServiceDiscoveryQuery query, string contextId) { var discoveryResults = await DiscoverInternalAsync(query, new ContextLinkageOptions(contextId), true).ConfigureAwait(false); return(discoveryResults.Select(x => new DiscoveredOnlineService(x)).ToList()); }
private async Task WhenUserGetInformationAboutRegisteredServices() { var serviceQuery = new ServiceDiscoveryQuery(); _services = await serviceQuery.GetServicesAsync(new ServerOptions { Address = "http://127.0.0.1:8500" }); }