コード例 #1
0
        public QuoteServiceSchedule(IFCMAPIConnection conn, ILogger log, ScheduleServiceClientAction scheduleServiceClient, QueueConnectionClient queueFanout)
        {
            _conn = conn;
            _log  = log;
            //_setting = setting;

            _log.Debug("[QuoteServiceSchedule.ctor()]");
            // Initial the job server.
            _log.Debug("[QuoteServiceSchedule.ctor()] Set memory storage.");
            GlobalConfiguration.Configuration.UseMemoryStorage();
            _log.Debug("[QuoteServiceSchedule.ctor()] Set background job server.");
            _jobServer = new BackgroundJobServer(new BackgroundJobServerOptions()
            {
                WorkerCount = 1
            });
            // Restore the schedule.
            _scheduleServiceClient =
                scheduleServiceClient ?? throw new ArgumentNullException(nameof(scheduleServiceClient));

            _log.Debug("[QuoteServiceSchedule.ctor()] Restore the schedule...");
            RestoreSchedule();
            _log.Debug("[QuoteServiceSchedule.ctor()] Restore the schedule...done.");

            // Listen to the UpdateSchedule event.
            _scheduleFanout = queueFanout ?? throw new ArgumentNullException(nameof(scheduleServiceClient));
            //_scheduleFanout.FanoutReceiver.InitListening(_setting.ScheduleTopic).Wait();
            _scheduleFanout.FanoutReceiver.ReceivedMessageEvent += FanoutReceiver_ReceivedMessageEvent;
        }
コード例 #2
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()); });
        }
コード例 #3
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()."));
        }
コード例 #4
0
        public GrpcServer(IFCMAPIConnection conn, QuoteActionGRPCServerSetting setting, ILogger logger)
        {
            _log     = logger;
            _setting = setting;
            _log.Debug("[QuoteActionServer.ctor] Host on {Host}:{Port}", setting.Host, setting.Port);



            _server = new Server()
            {
                Services =
                {
                    QRService.QuoteService.QuoteService.BindService(new QuoteServiceGrpc(conn, logger)),
                    CommandService.BindService(new CommandServiceGrpc(conn,                    logger)),
                    Health.BindService(new HealthCheckGrpc(conn,                               logger))
                },
                Ports =
                {
                    new ServerPort(setting.Host, setting.Port, ServerCredentials.Insecure)
                }
            };

            //var healthImplementation = new HealthServiceImpl();
        }
コード例 #5
0
 public HealthCheckGrpc(IFCMAPIConnection conn, ILogger logger)
 {
     _conn = conn;
     _log  = logger;
 }
コード例 #6
0
 public CommandServiceGrpc(IFCMAPIConnection conn, ILogger logger)
 {
     _conn = conn;
     _log  = logger;
 }
コード例 #7
0
 public QuoteServiceGrpc(IFCMAPIConnection conn, ILogger logger)
 {
     _conn = conn;
     _log  = logger;
 }