public void Initialize(
            string settingsFileName,
            string testSubdirectory)
        {
            if (settingsFileName == null)
            {
                throw new ArgumentNullException(nameof(settingsFileName));
            }
            if (testSubdirectory == null)
            {
                throw new ArgumentNullException(nameof(testSubdirectory));
            }

            _dataDirectory = Path.Combine(
                Path.GetTempPath(),
                "PVDevelop",
                "ReminderBot",
                "Commander",
                "Tests",
                testSubdirectory);

            ClearDataDirectory();

            _application =
                new ApplicationBuilder(configurationPath: AppContext.BaseDirectory).
                WithJsonSettings(jsonSettingsFileName: settingsFileName).
                Build();
        }
Пример #2
0
 /// <summary>注销轮循线程
 /// Uns the register intervalu object.
 /// </summary>
 /// <param name="runnable">The runnable.</param>
 public static void UnRegisterIntervaluObject(IRunable runnable)
 {
     if (runnable.RegisterdHandler != null && runnable.WaitHandler != null)
     {
         runnable.RegisterdHandler.Unregister(runnable.WaitHandler);
     }
 }
Пример #3
0
        public void UseCar()
        {
            carenum carenum = (carenum)(Enum.Parse(typeof(carenum), cartype));

            IRunable runable = null;

            switch (carenum)
            {
            case carenum.aodi:
                runable = new Aodi();
                break;

            case carenum.baoma:
                runable = new BaoMa();
                break;

            case carenum.benchi:
                runable = new Benchi();
                break;

            default:
                break;
            }
            runable.GuaDang();
            runable.Run();
        }
        public INameManager Register(IRunable runable)
        {
            var page = runable as IPage;

            if (page != null)
            {
                if (string.IsNullOrEmpty(page.Name))
                {
                    page.Name = Guid.NewGuid().ToShortString();
                }

                Pages.Add(page.Name, page);
            }

            var service = runable as IService;

            if (service != null)
            {
                if (string.IsNullOrEmpty(service.Name))
                {
                    service.Name = Guid.NewGuid().ToShortString();
                }

                Services.Add(service.Name, service);
            }

            return(this);
        }
Пример #5
0
        public void Register(IRunable runable)
        {
            var page = runable as IPage;

            if (page != null)
            {
                if (string.IsNullOrEmpty(page.Name))
                {
                    page.Name = GenerateElementName(page.Package);
                }
                else
                {
                    ValidateName(page.Name, page.Package);
                }

                lock (_pages) _pages.Add(page.Name, page);
            }

            var service = runable as IService;

            if (service != null)
            {
                if (string.IsNullOrEmpty(service.Name))
                {
                    service.Name = GenerateElementName(service.Package);
                }
                else
                {
                    ValidateName(service.Name, service.Package);
                }

                lock (_services) _services.Add(service.Name, service);
            }
        }
Пример #6
0
 /// <summary>注销轮循线程
 /// Uns the register intervalu object.
 /// </summary>
 /// <param name="runnable">The runnable.</param>
 public static void UnRegisterIntervaluObject(IRunable runnable)
 {
     if (runnable.RegisterdHandler != null && runnable.WaitHandler != null)
     {
         runnable.RegisterdHandler.Unregister(runnable.WaitHandler);
     }
 }
Пример #7
0
        public INameManager RegisterRunable(IRunable runable)
        {
            var name = runable.Package == null
                ? runable.Name
                : runable.Package.NamespaceName + ":" + runable.Name;

            try
            {
                var page = runable as IPage;
                if (page != null)
                {
                    lock (_pages) _pages.Add(name, page);
                }

                var service = runable as IService;
                if (service != null)
                {
                    lock (_services) _services.Add(name, service);
                }
            }
            catch (Exception ex)
            {
                throw new NameManagerException("Failed to register runable name '" + name + "' as " + runable, ex);
            }
            return(this);
        }
Пример #8
0
 private void RunTask()
 {
     while (true)
     {
         IRunable t = null;
         lock (this)
         {
             if (tasks.Count > 0)
             {
                 t = tasks[0];
                 tasks.RemoveAt(0);
             }
         }
         if (t != null)
         {
             currentTask = t;
             t.Run();
             currentTask = null;
             TipsCenter.Ins.BackTaskInf = ToString();
         }
         else
         {
             System.Threading.Thread.Sleep(2000);
         }
     }
 }
Пример #9
0
        public INameManager Register(IRunable runable)
        {
            if (string.IsNullOrEmpty(runable.Name))
            {
                runable.Name = GenerateElementName(runable.Package);

                if (_debugLogging)
                {
                    Trace.WriteLine("Name manager assigned '" + runable.Name +
                                    "' to anonymous " + runable.ElementType + " of type " +
                                    runable.GetType().DisplayName());
                }
            }
            else
            {
                ValidateElementName(runable.Name, runable.Package);
            }

            if (runable.Package == null)
            {
                _pendingRunableRegistrations.Add(runable);
            }
            else
            {
                RegisterRunable(runable);
            }

            return(this);
        }
Пример #10
0
 /// <summary>
 /// 注册一个轮循线程
 ///     <remark>abu 2008-03-07 </remark>
 /// </summary>
 /// <param name="runnable">The runnable.</param>
 /// <param name="state">The state.</param>
 /// <param name="interval">The interval.</param>
 public static void RegisterIntervalObject(IRunable runnable, object state, long interval, bool onlyOnce)
 {
     // if (runnable.RegisterdHandler == null)
     // {
     runnable.WaitHandler      = new AutoResetEvent(false);
     runnable.RegisterdHandler = ThreadPool.RegisterWaitForSingleObject(runnable.WaitHandler, new WaitOrTimerCallback(runnable.Run), state, interval, onlyOnce);
     // }
 }
Пример #11
0
    private void OnEnable()
    {
        _selfTransform = GetComponent <Transform>();
        _loadLine      = GetComponentInChildren <IRunable <float> >();
        var spawnTime = Instantiate(_spawnTimeViewer, FindObjectOfType <SpawnTimeParent>().transform);

        _spawnTimeViewer = spawnTime.GetComponent <SpawnTimeViewer>();
    }
Пример #12
0
 /// <summary>
 /// 注册一个轮循线程
 /// </summary>
 /// <param name="runnable">The runnable.</param>
 /// <param name="state">The state.</param>
 /// <param name="interval">The interval.</param>
 public static void RegisterIntervalObject(IRunable runnable, object state, long interval, bool onlyOnce)
 {
     // if (runnable.RegisterdHandler == null)
     // {
     runnable.WaitHandler = new AutoResetEvent(false);
     runnable.RegisterdHandler = ThreadPool.RegisterWaitForSingleObject(runnable.WaitHandler, new WaitOrTimerCallback(runnable.Run), state, interval, onlyOnce);
     // }
 }
Пример #13
0
 public IDisposable Register(IRunable runable, IRequestFilter filter, int priority, Type declaringType)
 {
     Runable       = runable;
     Filter        = filter;
     Priority      = priority;
     DeclaringType = declaringType;
     return(this);
 }
Пример #14
0
 public void Add(IRunable t)
 {
     lock (this)
     {
         ins.tasks.Add(t);
         TipsCenter.Ins.BackTaskInf = ToString();
     }
 }
Пример #15
0
 private static string AssertionMessage(IRunable Object, int miliseconds, string name)
 {
     string AssertionName;
     if (name == "")
         AssertionName=Object.ObjectsName()+".Run()";
     else
         AssertionName=name;
     return AssertionName + " has exceeded " + miliseconds + " miliseconds.";
 }
 public IDisposable Register(IRunable runable, IRequestFilter filter, int priority, Type declaringType, string scenarioName)
 {
     Runable        = runable;
     Filter         = filter;
     Priority       = priority;
     DeclaringType  = declaringType;
     UserSegmentKey = scenarioName;
     return(this);
 }
 public IDisposable Register(IRunable runable, IRequestFilter filter, int priority, MethodInfo methodInfo, string scenarioName)
 {
     Runable        = runable;
     Filter         = filter;
     Priority       = priority;
     MethodInfo     = methodInfo;
     UserSegmentKey = scenarioName;
     return(this);
 }
Пример #18
0
        /// <summary>
        /// Starts with specified config.
        /// </summary>
        /// <param name="config">The config.</param>
        /// <returns></returns>
        public static bool Start(IConfig config)
        {
            List <IServerConfig> serverList = config.GetServerList();

            Type serviceType = null;

            //ServiceCredentials credentials = null;

            //if (config.CredentialConfig != null)
            //    credentials = GetServiceCredentials(config.CredentialConfig);

            foreach (IServerConfig serverConfig in serverList)
            {
                if (serverConfig.Disabled)
                {
                    continue;
                }

                bool startResult = false;

                if (m_ServiceDict.TryGetValue(serverConfig.ServiceName, out serviceType))
                {
                    if (serviceType == null)
                    {
                        LogUtil.LogError(string.Format("The service {0} cannot be found in configuration!", serverConfig.ServiceName));
                        LogUtil.LogError("Failed to start " + serverConfig.Name + " server!");
                        return(false);
                    }

                    IRunable server = Activator.CreateInstance(serviceType) as IRunable;
                    if (server != null && server.Setup(GetServiceProvider(serverConfig.ServiceName, serverConfig.Provider), serverConfig, config.ConsoleBaseAddress))
                    {
                        //server.ServerCredentials = credentials;

                        if (server.Start())
                        {
                            m_ServerList.Add(server);
                            startResult = true;
                        }
                    }
                }

                if (!startResult)
                {
                    LogUtil.LogError("Failed to start " + serverConfig.Name + " server!");
                    return(false);
                }
                else
                {
                    LogUtil.LogInfo(serverConfig.Name + " has been started");
                }
            }


            return(true);
        }
Пример #19
0
 internal static void Assertion(IRunable Object, int miliseconds, string name="")
 {
     try
     {
         RunWithTimeout(Object, miliseconds);
     }
     catch (AutOfTimeException e)
     {
         string message = AssertionMessage(Object, miliseconds, name);
         Microsoft.VisualStudio.TestTools.UnitTesting.Assert.Fail(message);
     }
 }
Пример #20
0
 private IEnumerator SpawnObjects()
 {
     while (IsUsing)
     {
         _runablePool.GetObject().LeaveThePool(_selfTransform.position);
         if (_loadLine == null)
         {
             _loadLine = GetComponentInChildren <IRunable <float> >();
         }
         _loadLine.Run(SpawnTime);
         yield return(new WaitForSeconds(SpawnTime));
     }
 }
Пример #21
0
        private void Configure(AttributeSet attributes, IRunable runable)
        {
            if (runable == null)
            {
                return;
            }

            if (attributes.RequiresPermission != null)
            {
                runable.RequiredPermission = attributes.RequiresPermission.PermissionName;
            }

            if (attributes.CacheOutput != null)
            {
                runable.CacheCategory = attributes.CacheOutput.CacheCategory;
                runable.CachePriority = attributes.CacheOutput.CachePriority;
            }

            if (attributes.Routes != null)
            {
                foreach (var route in attributes.Routes)
                {
                    if (route.Methods == null || route.Methods.Length == 0)
                    {
                        if (string.IsNullOrEmpty(route.Path))
                        {
                            continue;
                        }
                        _requestRouter.Register(runable, new FilterByPath(route.Path), route.Priority, attributes.Type);
                    }
                    else
                    {
                        if (string.IsNullOrEmpty(route.Path))
                        {
                            _requestRouter.Register(runable, new FilterByMethod(route.Methods), route.Priority);
                        }
                        else
                        {
                            _requestRouter.Register(
                                runable,
                                new FilterAllFilters(
                                    new FilterByMethod(route.Methods),
                                    new FilterByPath(route.Path)),
                                route.Priority,
                                attributes.Type);
                        }
                    }
                }
            }
        }
Пример #22
0
 IDisposable IRequestRouter.Register(
     IRunable runable,
     IRequestFilter filter,
     int priority,
     Type declaringType,
     string scenarioName)
 {
     return(Add(new Registration
     {
         Priority = priority,
         Filter = filter,
         TestScenarioName = string.IsNullOrWhiteSpace(scenarioName) ? null : scenarioName,
         Runable = runable,
         DeclaringType = declaringType ?? runable.GetType()
     }));
 }
Пример #23
0
        IDisposable IRequestRouter.Register(IRunable runable, IRequestFilter filter, int priority, Type declaringType)
        {
            var registration = new Registration
            {
                Priority      = priority,
                Filter        = filter,
                Runable       = runable,
                DeclaringType = declaringType ?? runable.GetType()
            };

            lock (_registrations)
            {
                _registrations.Add(registration);
                _registrations.Sort();
            }

            return(registration);
        }
Пример #24
0
        /// <summary>
        /// Starts the available IRunables from the [PluginsFolder] folder
        /// </summary>
        /// <returns></returns>
        public void Start()
        {
            lock (_lockObj)
            {
                if (!Initialized)
                {
                    _logger.Error($"{nameof(PluginLoader)} not initialized yet.");
                    return;
                }

                if (_iRunables.Count > 1)
                {
                    _logger.Error($"More {nameof(IRunable)} was found in folder: {PluginsFolder}");

                    foreach (KeyValuePair <Type, Assembly> item in _iRunables)
                    {
                        _logger.Info($"{nameof(IRunable)} was found in type {item.Key} in assembly: {item.Value}");
                    }

                    return;
                }

                try
                {
                    Type type = _iRunables[0].Key;

                    IRunable runable = (IRunable)Activator.CreateInstance(type);

                    _logger.Info($"{nameof(IRunable)} was created with the type: {type}");

                    runable.Run();

                    _logger.Info($"{type} started.");
                }
                catch (Exception ex)
                {
                    SendToErrorLogAndConsole($"Exception occured: {ex}");
                }
            }
        }
Пример #25
0
        /// <summary>
        /// 简单工厂-基础实现r
        /// </summary>
        /// <param name="carenum"></param>
        public void UseCar(carenum carenum)
        {
            IRunable runable = null;

            switch (carenum)
            {
            case carenum.aodi:
                runable = new Aodi();
                break;

            case carenum.baoma:
                runable = new BaoMa();
                break;

            case carenum.benchi:
                runable = new Benchi();
                break;

            default:
                break;
            }
            runable.GuaDang();
            runable.Run();
        }
Пример #26
0
 public void Add(IRunable runable)
 {
     lst.Add(runable);
 }
Пример #27
0
 public void Remove(IRunable runable)
 {
     lst.Remove(runable);
 }
Пример #28
0
 static void Run(IRunable runnable)
 {
     runnable.Run();
 }
Пример #29
0
 static void Running(IRunable runner)  //인터페이스에 정의된 클래스 타입으로 자식클래스 사용(부모↔ 자식 자동 형변환)
 {
     runner.Run();
 }
Пример #30
0
 /// <summary> Advanced: start runnable object in local thread, and return thread instance </summary>
 public static void Run(IRunable runnable, out Thread worker)
 {
     worker = new Thread(delegate(object runObj) { ((IRunable)runObj).Run(); });
     worker.Start();
 }
Пример #31
0
        /// <summary> Start runnable object in ThreadPool </summary>
        public static void Run(IRunable runnable)
        {
            WaitCallback callback = new WaitCallback(delegate(object runObj) { ((IRunable)runObj).Run(); });

            ThreadPool.QueueUserWorkItem(callback, runnable);
        }
Пример #32
0
 public GameRunner(IRunable run)
 {
     this.run = run;
 }
Пример #33
0
 public static void Post(IRunable task)
 {
     ThreadPool.QueueUserWorkItem(task.Run);
 }
Пример #34
0
 static void Running(IRunable runner)
 {
     runner.Run();
 }
Пример #35
0
 public static void RunWithTimeout(IRunable obj, int timeOutForThread)
 {
     RunWithTimeout(obj.Run, timeOutForThread);
 }