コード例 #1
0
        internal static void Run()
        {
            DatabaseUtil.ReleaseConsole();
            var server = RealmServ.Instance;

            if (!server.IsRunning)
            {
                Thread.Sleep(300);
                Console.WriteLine("Press any key to exit...");
                Console.ReadKey();
            }
            else
            {
                Console.WriteLine("Console ready. Type ? for help");

                DefaultTrigger = new DefaultCmdTrigger
                {
                    Args = new RealmServerCmdArgs(null, false, null)
                };

                while (RealmServ.Instance.IsRunning)
                {
                    string line;
                    try
                    {
                        while (!Console.KeyAvailable && RealmServ.Instance.IsRunning)
                        {
                            Thread.Sleep(100);
                        }
                        if (!RealmServ.Instance.IsRunning)
                        {
                            break;
                        }
                        line = Console.ReadLine();
                    }
                    catch
                    {
                        // console shutdown
                        break;
                    }
                    if (line == null || !RealmServ.Instance.IsRunning)
                    {
                        break;
                    }
                    try
                    {
                        if (DatabaseUtil.IsWaiting)
                        {
                            DatabaseUtil.Input.Write(line);
                        }
                        else
                        {
                            var text = new StringStream(line);
                            DefaultTrigger.Text = text;
                            if (!DefaultTrigger.InitTrigger())
                            {
                                continue;
                            }

                            var isSelect = text.ConsumeNext(RealmCommandHandler.SelectCommandPrefix);
                            if (isSelect)
                            {
                                var cmd = RealmCommandHandler.Instance.SelectCommand(text);
                                if (cmd != null)
                                {
                                    Console.WriteLine(@"Selected: {0}", cmd);
                                    DefaultTrigger.SelectedCommand = cmd;
                                }
                                else if (DefaultTrigger.SelectedCommand != null)
                                {
                                    Console.WriteLine(@"Cleared Command selection.");
                                    DefaultTrigger.SelectedCommand = null;
                                }
                            }
                            else
                            {
                                bool dbl;
                                RealmCommandHandler.ConsumeCommandPrefix(text, out dbl);
                                DefaultTrigger.Args.Double = dbl;

                                RealmCommandHandler.Instance.ExecuteInContext(DefaultTrigger,
                                                                              OnExecuted,
                                                                              OnFail);
                            }
                        }
                    }
                    catch (Exception e)
                    {
                        LogUtil.ErrorException(e, false, "Failed to execute Command.");
                    }
                }
            }
        }
コード例 #2
0
ファイル: RealmServerConsole.cs プロジェクト: NVN/WCell
		internal static void Run()
		{
			DatabaseUtil.ReleaseConsole();
			var server = RealmServ.Instance;

			if (!server.IsRunning)
			{
				Thread.Sleep(300);
				Console.WriteLine("Press any key to exit...");
				Console.ReadKey();
			}
			else
			{
				Console.WriteLine("Console ready. Type ? for help");

				DefaultTrigger = new DefaultCmdTrigger
				{
					Args = new RealmServerCmdArgs(null, false, null)
				};

				while (RealmServ.Instance.IsRunning)
				{
					string line;
					try
					{
						while (!Console.KeyAvailable && RealmServ.Instance.IsRunning)
                        {
                        	Thread.Sleep(100);
                        }
						if (!RealmServ.Instance.IsRunning)
						{
							break;
						}
						line = Console.ReadLine();
					}
					catch
					{
						// console shutdown
						break;
					}
					if (line == null || !RealmServ.Instance.IsRunning)
					{
						break;
					}
					try
					{
						if (DatabaseUtil.IsWaiting)
						{
							DatabaseUtil.Input.Write(line);
						}
						else
						{
							var text = new StringStream(line);
							DefaultTrigger.Text = text;
							if (!DefaultTrigger.InitTrigger())
							{
								continue;
							}

							var isSelect = text.ConsumeNext(RealmCommandHandler.SelectCommandPrefix);
							if (isSelect)
							{
								var cmd = RealmCommandHandler.Instance.SelectCommand(text);
								if (cmd != null)
								{
									Console.WriteLine(@"Selected: {0}", cmd);
									DefaultTrigger.SelectedCommand = cmd;
								}
								else if (DefaultTrigger.SelectedCommand != null)
								{
									Console.WriteLine(@"Cleared Command selection.");
									DefaultTrigger.SelectedCommand = null;
								}
							}
							else
							{
								bool dbl;
								RealmCommandHandler.ConsumeCommandPrefix(text, out dbl);
								DefaultTrigger.Args.Double = dbl;

								RealmCommandHandler.Instance.ExecuteInContext(DefaultTrigger,
								                                              OnExecuted,
								                                              OnFail);
							}
						}
					}
					catch (Exception e)
					{
						LogUtil.ErrorException(e, false, "Failed to execute Command.");
					}
				}
			}
		}
コード例 #3
0
ファイル: RealmServerConsole.cs プロジェクト: pallmall/WCell
		internal static void Run()
		{
			DatabaseUtil.ReleaseConsole();
			var server = RealmServer.RealmServer.Instance;

			if (!server.IsRunning)
			{
				Thread.Sleep(300);
				Console.WriteLine("Press any key to exit...");
				Console.ReadKey();
			}
			else
			{
				Console.WriteLine("Console ready. Type ? for help");

				DefaultTrigger = new DefaultCmdTrigger
				{
					Args = new RealmServerCmdArgs(null, false, null)
				};

                while (ServerApp<RealmServer.RealmServer>.Instance.IsRunning)
				{
					string line;
					try
					{
                        while (Console.KeyAvailable == false && ServerApp<RealmServer.RealmServer>.Instance.IsRunning)
                            Thread.Sleep(100);
					    if (!ServerApp<RealmServer.RealmServer>.Instance.IsRunning) break;
                        //NOTE if some key pressed in console without Enter will lock
						line = Console.ReadLine();
					}
					catch
					{
						// console shutdown
						break;
					}
					if (line == null || !ServerApp<RealmServer.RealmServer>.Instance.IsRunning)
					{
						break;
					}
					try
					{
						if (DatabaseUtil.IsWaiting)
						{
							DatabaseUtil.Input.Write(line);
						}
						else
						{
							var text = new StringStream(line);
							DefaultTrigger.Text = text;
							if (!DefaultTrigger.InitTrigger())
							{
								continue;
							}

							var isSelect = text.ConsumeNext(RealmCommandHandler.SelectCommandPrefix);
							if (isSelect)
							{
								var cmd = RealmCommandHandler.Instance.SelectCommand(text);
								if (cmd != null)
								{
									Console.WriteLine("Selected: " + cmd);
									DefaultTrigger.SelectedCommand = cmd;
								}
								else if (DefaultTrigger.SelectedCommand != null)
								{
									Console.WriteLine("Cleared Command selection.");
									DefaultTrigger.SelectedCommand = null;
								}
							}
							else
							{
								RealmCommandHandler.Instance.ExecuteInContext(DefaultTrigger, true,
									OnExecuted,
									OnFail);
							}
						}
					}
					catch (Exception e)
					{
						LogUtil.ErrorException(e, false, "Failed to execute Command.");
					}
				}
			}
		}