public override Task <CommandServiceResponse> Start(EmptyRequest request, ServerCallContext context) { return(Task.Run(() => { var response = new CommandServiceResponse(); bool result = _conn.Reconnect().Result; response.Result = result?0:-1; return response; })); }
public HealthAction(IFCMAPIConnection apiConnection, ILogger logger, DataEventBroker <ConnectionStatusEvent> connStatusBroker) { _connStatusBroker = connStatusBroker; _conn = apiConnection; _log = logger; _connStatusBroker.Subscribe(async x => { logger.Debug("[HealthAction()] {ConnectionStatus} : {Message}", x.ConnectionStatus.ToString(), x.Message ); await Task.Run(async() => { switch (x.ConnectionStatus) { case ConnectionStatus.NotConnected: await apiConnection.Reconnect(); break; case ConnectionStatus.Connecting: //await CheckConnectingStatus(); await CheckConnectingStatus(); break; case ConnectionStatus.ConnectionReady: break; case ConnectionStatus.ConnectionError: await apiConnection.Reconnect(); break; default: //throw new ArgumentOutOfRangeException(); break; } }); }); //apiConnection.Connect().Wait(); _connStatusBroker.Publish(ConnectionStatusEvent.GetEvent(apiConnection.APIStatus, "Ready for Connect().")); }
private Task CheckConnectingStatus() { return(Task.Run(async() => { _log.Debug("[HealthAction.CheckConnectingStatus()] Connecting, check connection status after 30 seconds..."); Thread.Sleep(TimeSpan.FromSeconds(30)); _log.Debug("[HealthAction.CheckConnectingStatus()] {ConnectionStatus}...", _conn.APIStatus.ToString()); if (_conn.APIStatus != ConnectionStatus.ConnectionReady) { _log.Debug("[HealthAction.CheckConnectingStatus()] Still connecting, reconnect..."); await _conn.Reconnect(); } })); }
public QuoteServiceAPIModule(IFCMAPIConnection fcmAPI) { Get("/", _ => "Quote Service"); Get("/Connect/Status", _ => fcmAPI.APIStatus.ToString()); Post("/Connect", parameters => { return(fcmAPI.Connect().Result ? HttpStatusCode.Accepted : HttpStatusCode.BadRequest); }); Post("/Reconnect", parameters => { return(fcmAPI.Reconnect().Result ? HttpStatusCode.Accepted : HttpStatusCode.BadRequest); }); Post("/Disconnect", _ => { return(fcmAPI.Disconnect()); }); Get("/Quote", _ => String.Join(",", fcmAPI.QuotesList.Select(x => x.Exchange + "," + x.Symbol).ToArray())); Post("/Quote/{exchange}/{symbol}", parameters => { var exchange = (string)parameters.exchange; var symbol = (string)parameters.symbol; return(fcmAPI.AddQuote(new Quote() { Exchange = exchange, Symbol = symbol }).Result ? HttpStatusCode.Accepted : HttpStatusCode.BadRequest); }); Delete("/Quote/{exchange}/{symbol}", parameters => { var exchange = (string)parameters.exchange; var symbol = (string)parameters.symbol; return(fcmAPI.RemoveQuote(new Quote() { Exchange = exchange, Symbol = symbol }).Result ? HttpStatusCode.Accepted : HttpStatusCode.BadRequest); }); Delete("/Quote", parameters => { return(fcmAPI.RemoveAllQuotes()); }); }