Example #1
0
        IService FetchService(Type serviceType)
        {
            //an active provider already assigned to this service?
            IService serviceProvider;

            if (_serviceProviders.TryGetValue(serviceType, out serviceProvider))
            {
                return(serviceProvider);
            }

            //do we even know this service?
            if (!_unprovidedServices.Contains(serviceType))
            {
                CoreLogger.LogNotice(_loggerModule, string.Format("requested service {0} is not known to this container!", serviceType.Name));
                return(null);
            }

            //do we have an active provider for this service? an active provider is probably already providing other services,
            //but can provide this as well
            IService activeProvider = _activeProviders.Where(p => p.GetType().GetInterfaces().Contains(serviceType)).FirstOrDefault();

            if (activeProvider != null)
            {
                CoreLogger.LogDebug(_loggerModule, string.Format("adding service {0}, provided by {1}", serviceType.Name, activeProvider.GetType().Name));
                _serviceProviders[serviceType] = activeProvider;
                return(activeProvider);
            }

            return(null);
        }
Example #2
0
 public virtual void ManualStart()
 {
     if (!_running)
     {
         _loop = Run();
         StartCoroutine(_loop);
     }
     else
     {
         CoreLogger.LogNotice(name, "TaskQueue.ManualStart called when queue already handling!");
     }
 }