예제 #1
0
        public async Task <bool> Run(CancellationToken token, Logger log, Config config)
        {
            _log    = log;
            _config = config;

            ResgridV3ApiClient.Init(_config.ApiUrl, _config.Username, _config.Password);

            var departments = await DepartmentApi.Get(_config.CacheDepartmentId);

            foreach (var department in departments)
            {
                var departmentDataProvider = new DepartmentDataProvider(department);
                await departmentDataProvider.GetData(false);

                departmentDataProvider.Start(_config, log);
                _data.Add(department.Id, departmentDataProvider);
            }

            while (!token.IsCancellationRequested)
            {
                Thread.Sleep(500);
            }

            foreach (var item in _data)
            {
                item.Value.Stop();
            }

            return(true);
        }
예제 #2
0
        private void Init()
        {
            if (_config == null)
            {
                _config = _configService.LoadSettingsFromFile();

                ResgridV3ApiClient.Init(_config.ApiUrl, _config.Username, _config.Password);
            }
        }
예제 #3
0
        private bool Run(Config config, Logger log)
        {
            System.Console.WriteLine($"Listening for Dispatches on Device: {config.InputDevice}");

            audioStorage          = new WatcherAudioStorage(log);
            evaluator             = new AudioEvaluator(log);
            recorder              = new AudioRecorder(evaluator, audioStorage);
            processor             = new AudioProcessor(recorder, evaluator, audioStorage);
            com                   = new ComService(log, processor);
            com.CallCreatedEvent += Com_CallCreatedEvent;

            System.Console.WriteLine("Hooking into Events");
            recorder.SampleAggregator.MaximumCalculated  += SampleAggregator_MaximumCalculated;
            recorder.SampleAggregator.WaveformCalculated += SampleAggregator_WaveformCalculated;

            processor.TriggerProcessingStarted  += Processor_TriggerProcessingStarted;
            processor.TriggerProcessingFinished += Processor_TriggerProcessingFinished;

            evaluator.WatcherTriggered += Evaluator_WatcherTriggered;

            ResgridV3ApiClient.Init(config.ApiUrl, config.Username, config.Password);

            System.Console.WriteLine(
                $"Config Loaded with {config.Watchers.Count} watchers ({config.Watchers.Count(x => x.Active)} active)");

            System.Console.WriteLine("Initializing Processor");
            processor.Init(config);

            System.Console.WriteLine("Starting Processor");
            processor.Start();

            System.Console.WriteLine("Starting Communication Service");
            com.Init(config);
            System.Console.WriteLine("Communication Service: Validating API Connection");

            if (com.IsConnectionValid())
            {
                System.Console.WriteLine("Communication Service: API Connection is Valid");
            }
            else
            {
                System.Console.WriteLine(
                    "Communication Service: CANNOT TALK TO RESGRID API, CHECK YOUR CONFIG APIURL AND ENSURE YOUR COMPUTER CAN TALK TO THAT URL");
            }

            System.Console.WriteLine("Ready, Listening to Audio. Press Ctrl+C to exit.");

            while (recorder.RecordingState == RecordingState.Monitoring || recorder.RecordingState == RecordingState.Recording)
            {
                Thread.Sleep(250);
            }

            return(true);
        }