コード例 #1
0
 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;
     }));
 }
コード例 #2
0
        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()."));
        }
コード例 #3
0
 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();
         }
     }));
 }
コード例 #4
0
        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()); });
        }