Exemplo n.º 1
0
        public EliteDangerousAPI(IServiceProvider services)
        {
            try
            {
                Version = Assembly.GetExecutingAssembly().GetName().Version;

                _log    = services.GetRequiredService <ILogger <EliteDangerousAPI> >();
                _config = services.GetRequiredService <IConfiguration>();

                _eventProvider   = services.GetRequiredService <IEventProvider>();
                _eventProcessors = services.GetRequiredService <IEnumerable <IEventProcessor> >();

                _journalDirectoryProvider = services.GetRequiredService <IJournalDirectoryProvider>();

                _journalProvider  = services.GetRequiredService <IJournalProvider>();
                _journalProcessor = services.GetRequiredService <IJournalProcessor>();

                _statusProvider  = services.GetRequiredService <IStatusProvider>();
                _statusProcessor = services.GetRequiredService <IStatusProcessor>();

                Events = services.GetRequiredService <EventHandler>();
                Status = services.GetRequiredService <IShipStatus>();
            }
            catch (Exception ex)
            {
                PreInitializationException = ex;
            }
        }
Exemplo n.º 2
0
        private Task InvokeStatusUpdateMethod(RawShipStatus raw, IShipStatus status, string propertyName)
        {
            try
            {
                var rawValue             = raw.GetType().GetProperty(propertyName).GetValue(raw);
                var statusUpdateProperty = _status.GetType().GetProperty(propertyName).GetValue(_status);
                var updateMethod         = statusUpdateProperty.GetType()
                                           .GetMethod("Update", BindingFlags.NonPublic | BindingFlags.Instance);
                var needsUpdateMethod = statusUpdateProperty.GetType()
                                        .GetMethod("NeedsUpdate", BindingFlags.NonPublic | BindingFlags.Instance);

                var needsUpdate = needsUpdateMethod.Invoke(statusUpdateProperty, new[] { rawValue });
                if ((bool)needsUpdate)
                {
                    _log.LogTrace("Invoking OnChange event for {name} status", propertyName);
                    updateMethod.Invoke(statusUpdateProperty, new[] { this, rawValue });
                }
            }
            catch (Exception ex)
            {
                _log.LogWarning(ex, "Could not update status property {name}", propertyName);
            }

            return(Task.CompletedTask);
        }
Exemplo n.º 3
0
 public StatusProcessor(ILogger <StatusProcessor> log, IShipStatus status)
 {
     _log    = log;
     _status = status;
     _cache  = new Dictionary <string, string>();
 }