示例#1
0
    public override void StartAction()
    {
        Cat cat = GetCat();

        FurnitureBase drinkBow = catCafe.GetFurnitureByType(FurnitureType.Water);
        InteractPoint point    = drinkBow.ReserveInteractionPoint(cat);

        if (point == null)
        {
            ActionEnd();
            return;
        }
        CatWalkTask walkTask = actionHolder.AddComponent <CatWalkTask>();

        walkTask.SetTaskTarget(drinkBow.gameObject, point.transform.position, cat);

        CatDrinkTask drinkTask = actionHolder.AddComponent <CatDrinkTask>();

        drinkTask.SetTaskTarget(drinkBow.gameObject, Vector3.zero, cat);

        TaskChain chain = actionHolder.AddComponent <TaskChain>();

        chain.PushTask(walkTask);
        chain.PushTask(drinkTask);
        chain.notifyTaskChainEnd += OnTaskChainEnd;

        chain.StartTaskChain();
    }
示例#2
0
        public static void T_InsertAndSelect()
        {
            try
            {
                var tc = new TaskChain();

                var connStr = GetMySqlConnString();
                var conn    = new MySqlConnection(connStr);
                conn.UseConnectionPool = true;
                conn.AsyncOpen(tc);

                DropTableIfExists(conn, tc);
                CreateTable(conn, tc);
                for (int i = 0; i < 1; ++i)
                {
                    InsertData(conn, tc);
                }
                SelectDataBack(conn, tc);

                conn.AsyncClose(tc);
                //
                tc.WhenFinish(() =>
                {
                });
                tc.BeforeEachTaskBegin(() =>
                {
                });
                tc.Start();
            }
            catch (Exception ex)
            {
            }
        }
        static void SelectDataBack(MySqlConnection conn, TaskChain tc)
        {
            string sql = "select * from test001";
            var    cmd = new MySqlCommand(sql, conn);

            tc.AddTask(() =>
            {
#if DEBUG
                conn.dbugPleaseBreak = true;
#endif
            });

            //this is very basic mapper***
            var mapper = Mapper.Map((SimpleInfo t, int col_id, string col2, string col3) =>
            {
                t.col1 = col_id;
                t.col2 = col2;
            });


            cmd.AsyncExecuteSubTableReader(tc, reader =>
            {
                mapper.DataReader = reader;
                while (SharpConnect.MySql.SyncPatt.MySqlSyncPattExtension.Read(reader))
                {
                    var simpleInfo = mapper.Map(new SimpleInfo());
                }
                tc.AutoCallNext = reader.CurrentSubTable.IsLastTable;
            });
        }
示例#4
0
    public override void StartAction()
    {
        if (toyTask == null)
        {
            SelectNearestToy();
            // TODO more toys
            toyTask = ActionUtils.Instance.CreatCatTaskByType(TaskType.PlayBall, toyObj, Vector3.zero, GetCat());
        }

        if (toyObj == null)
        {
            Debug.LogError("Cannot find any Toy");
            return;
        }
        CatRunTask runTask = ActionUtils.Instance.CreatCatTaskByType(TaskType.Run, toyObj, toyObj.transform.position, GetCat()) as CatRunTask;

        runTask.StopDistance = 0.5f;

        CatPlayBallTask playBallTask = actionHolder.AddComponent <CatPlayBallTask>();

        playBallTask.SetTaskTarget(toyObj, Vector3.zero, GetCat());

        TaskChain chain = actionHolder.AddComponent <TaskChain>();

        chain.PushTask(runTask);
        chain.PushTask(playBallTask);
        chain.notifyTaskChainEnd += OnTaskChainEnd;

        chain.StartTaskChain();
    }
示例#5
0
        static void DropTableIfExists(MySqlConnection conn, TaskChain tc)
        {
            string sql = "drop table if exists test001";
            var    cmd = new MySqlCommand(sql, conn);

            cmd.AsyncExecuteNonQuery(tc);
        }
示例#6
0
        static void SelectDataBack(MySqlConnection conn, TaskChain tc)
        {
            string sql = "select * from test001";
            var    cmd = new MySqlCommand(sql, conn);

            tc.AddTask(() =>
            {
#if DEBUG
                conn.dbugPleaseBreak = true;
#endif
            });

            //this is very basic mapper***
            var mapper = Mapper.Map((SimpleInfo t, int col_id, string col2, string col3) =>
            {
                t.col1 = col_id;
                t.col2 = col2;
            });

            cmd.AsyncExecuteSubTableReader(tc, reader =>
            {
                mapper.DataReader = reader;
                while (reader.Read())
                {
                    var simpleInfo = mapper.Map(new SimpleInfo());
                }

                ////simple map query result to member of the target object
                ////we create simpleinfo and use mapper to map field


                tc.AutoCallNext = reader.CurrentSubTable.IsLastTable;
            });
        }
示例#7
0
        public static void T_DropCreateInsert()
        {
            var connStr = GetMySqlConnString();
            var conn    = new MySqlConnection(connStr);
            var tc      = new TaskChain();

            conn.AsyncOpen(tc);
            {
                //1. drop tabled
                var cmd = new MySqlCommand("drop table if exists user_info2", conn);
                cmd.AsyncExecuteNonQuery(tc);
            }
            {
                var cmd = new MySqlCommand("drop table if exists user_info2", conn);
                cmd.AsyncExecuteNonQuery(tc);
            }
            //2. create new one
            {
                var cmd = new MySqlCommand("create table user_info2(uid int(10),u_name varchar(45));", conn);
                cmd.AsyncExecuteNonQuery(tc);
            }
            //3. add some data
            {
                var cmd = new MySqlCommand("insert into user_info2(uid, u_name) values(?uid, 'abc')", conn);
                cmd.Parameters.AddWithValue("?uid", 10);
                cmd.AsyncExecuteNonQuery(tc);
            }

            Report.WriteLine("ok");
            conn.AsyncClose(tc);
            tc.Start();
        }
示例#8
0
    public override void StartAction()
    {
        Cat cat = GetCat();

        FurnitureBase foodBow = catCafe.GetFurnitureByType(FurnitureType.Food);
        InteractPoint point   = foodBow.ReserveInteractionPoint(cat);

        if (point == null)
        {
            // TODO need to check, there is bug when two cat both reserve
            ActionEnd();
            return;
        }
        // TODO if no point
        CatWalkTask walkTask = actionHolder.AddComponent <CatWalkTask>();

        walkTask.SetTaskTarget(foodBow.gameObject, point.transform.position, cat);

        CatEatTask eatTask = actionHolder.AddComponent <CatEatTask>();

        eatTask.SetTaskTarget(foodBow.gameObject, Vector3.zero, cat);

        TaskChain chain = actionHolder.AddComponent <TaskChain>();

        chain.PushTask(walkTask);
        chain.PushTask(eatTask);
        chain.notifyTaskChainEnd += OnTaskChainEnd;

        chain.StartTaskChain();
    }
示例#9
0
        static void CreateTable(MySqlConnection conn, TaskChain tc)
        {
            string sql = "create table test001(col_id  int(10) unsigned not null auto_increment, col1 int(10)," +
                         "col2 char(2),col3 varchar(255),col4 datetime, primary key(col_id) )";
            var cmd = new MySqlCommand(sql, conn);

            cmd.AsyncExecuteNonQuery(tc);
        }
示例#10
0
 public static void Check2()
 {
     Task <int[]> .Factory
     .StartNew(() => TaskChain.GenerateArray(10))
     .LogAndContinueArray(TaskChain.MultiplyBy)
     .LogAndContinueArray(TaskChain.SortAscending)
     .LogAndContinue(TaskChain.Average)
     .LogAndContinue(() => System.Console.WriteLine("Finish"))
     .Wait();
 }
示例#11
0
 public Task(
     int id,
     string taskName,
     string description)
 {
     Id          = id;
     TaskName    = taskName;
     Description = description;
     Chain       = new TaskChain(this);
 }
示例#12
0
        public static void T_AsyncSocket2()
        {
            var connStr = GetMySqlConnString();
            var conn    = new MySqlConnection(connStr);
            var tc      = new TaskChain();

            conn.AsyncOpen(tc);
            conn.AsyncClose(tc);
            tc.Start();
        }
示例#13
0
        public override List <Task> GetList()
        {
            base.GetList();

            foreach (var chain in chains)
            {
                TaskChain.RegisterInTaskChain(chain.Value.Values);
            }

            return(Data);
        }
示例#14
0
        static void InsertData(MySqlConnection conn, TaskChain tc)
        {
            string sql = "insert into test001(col1,col2,col3,col4) values(10,'AA','123456789','0001-01-01')";
            var    cmd = new MySqlCommand(sql, conn);

            cmd.AsyncExecuteNonQuery(tc);
            tc.AddTask(() =>
            {
                var lastInsertId = cmd.LastInsertedId;
            });
        }
示例#15
0
        public void RunAsync_RunsTasksInSequenceAndCompletesAfterAction()
        {
            TaskCompletionSource <bool> tcs = new TaskCompletionSource <bool>();
            bool      done  = false;
            TaskChain chain = new TaskChain(() => tcs.Task, () => done = true);

            Task task = chain.RunAsync();

            Assert.False(task.IsCompleted);
            Assert.False(done);

            tcs.SetResult(true);

            Assert.True(task.IsCompleted);
            Assert.False(task.IsFaulted);
            Assert.True(done);
        }
示例#16
0
            public int UpdateAndGetTaskCount()
            {
                if (m_chain != null)
                {
                    var status = m_chain.Next();
                    if (status == ExecutionStatus.Continue)
                    {
                        // m_item継続中
                        return(m_taskQueue.Count);
                    }
                    m_chain = null;
                }

                int count;

                m_chain = m_taskQueue.Dequeue(out count);
                return(count);
            }
示例#17
0
        public static void T_InsertAndSelect_Async()
        {
            System.Diagnostics.Stopwatch stopW = new System.Diagnostics.Stopwatch();
            stopW.Start();
            var connStr = GetMySqlConnString();
            var conn    = new MySqlConnection(connStr);

            conn.UseConnectionPool = true;

            var tc = new TaskChain();

            conn.AsyncOpen(tc);

            {
                //drop table if exist
                string sql = "drop table if exists test001";
                var    cmd = new MySqlCommand(sql, conn);
                cmd.AsyncExecuteNonQuery(tc);
            }


            {
                string sql = "create table test001(col_id  int(10) unsigned not null auto_increment, col1 int(10)," +
                             "col2 char(2),col3 varchar(255),col4 datetime, primary key(col_id) )";
                var cmd = new MySqlCommand(sql, conn);
                cmd.AsyncExecuteNonQuery(tc);
            }

            for (int i = 0; i < 2000; ++i)
            {
                string sql = "insert into test001(col1,col2,col3,col4) values(10,'AA','123456789','0001-01-01')";
                var    cmd = new MySqlCommand(sql, conn);
                cmd.AsyncExecuteNonQuery(tc);
            }

            conn.AsyncClose(tc);
            tc.WhenFinish(() =>
            {
                stopW.Stop();
                Report.WriteLine("avg:" + stopW.ElapsedTicks);
            });
            tc.Start();
        }
示例#18
0
        public void RunAsync_ExceptionInFirstTask_ThrowsExceptionSkipsAction()
        {
            TaskCompletionSource <bool> tcs = new TaskCompletionSource <bool>();
            bool done = false;
            InvalidTimeZoneException expectedException = new InvalidTimeZoneException("expected");
            TaskChain chain = new TaskChain(() => tcs.Task, () => done = true);

            Task task = chain.RunAsync();

            tcs.SetException(expectedException);

            Assert.True(task.IsCompleted);
            Assert.True(task.IsFaulted);
            AggregateException ae = Assert.IsType <AggregateException>(task.Exception).Flatten();

            Assert.Equal(1, ae.InnerExceptions.Count);
            Assert.Same(expectedException, ae.InnerExceptions[0]);
            Assert.False(done);
        }
        public static void T_Select_sysdate3()
        {
            //prefer this

            var connStr = GetMySqlConnString();
            var conn    = new MySqlConnection(connStr);
            var tc      = new TaskChain();

            conn.AsyncOpen(tc);
            var cmd = new MySqlCommand("select sysdate()", conn);

            cmd.AsyncExecuteReader(tc, reader =>
            {
                //this example we read each row asynchronously
                //read as
                var dtm = reader.GetDateTime(0);
            });
            conn.AsyncClose(tc);
            tc.WhenFinish(() =>
            {
            });
            tc.Start();
        }
示例#20
0
        public static void T_Select_sysdate3()
        {
            //prefer this

            var connStr = GetMySqlConnString();
            var conn    = new MySqlConnection(connStr);
            var tc      = new TaskChain();

            conn.AsyncOpen(tc);
            var cmd = new MySqlCommand("select sysdate()", conn);

            cmd.AsyncExecuteSubTableReader(tc, reader =>
            {
                if (reader.Read())
                {
                    var dtm = reader.GetDateTime(0);
                }
            });
            conn.AsyncClose(tc);
            tc.WhenFinish(() =>
            {
            });
            tc.Start();
        }
示例#21
0
        public static void T_InsertAndSelect_Async3()
        {
            System.Diagnostics.Stopwatch stopW = new System.Diagnostics.Stopwatch();
            stopW.Start();
            var connStr = GetMySqlConnString();
            var conn    = new MySqlConnection(connStr);

            conn.UseConnectionPool = true;

            var tc = new TaskChain();

            //add task chain too connection object
            conn.AsyncOpen(tc);
            //-----------------------------------------
            {
                //drop table if exist
                string sql = "drop table if exists test001";
                var    cmd = new MySqlCommand(sql, conn);
                cmd.AsyncExecuteNonQuery(tc);
            }
            //-----------------------------------------
            {
                //drop table if exist
                string sql = "drop table if exists test001";
                var    cmd = new MySqlCommand(sql, conn);
                cmd.AsyncExecuteNonQuery(tc);
            }
            //-----------------------------------------
            {
                string sql = "create table test001(col_id  int(10) unsigned not null auto_increment, col1 int(10)," +
                             "col2 char(2),col3 varchar(255),col4 datetime, primary key(col_id) )";
                var cmd = new MySqlCommand(sql, conn);
                cmd.AsyncExecuteNonQuery(tc);
            }
            //-----------------------------------------
            for (int i = 0; i < 100; ++i)
            {
                string sql = "insert into test001(col1,col2,col3,col4) values(10,'AA','123456789','0001-01-01')";
                var    cmd = new MySqlCommand(sql, conn);
                cmd.AsyncExecuteNonQuery(tc);
            }
            //-----------------------------------------
            {
                string sql = "select * from test001";
                var    cmd = new MySqlCommand(sql, conn);

                cmd.AsyncExecuteSubTableReader(tc, subtable =>
                {
                    //when new task is add after tc is started
                    //then this new task is immmediately insert
                    //after current task
                });
            }
            {
                string sql = "select sysdate()";
                var    cmd = new MySqlCommand(sql, conn);
                cmd.AsyncExecuteScalar <DateTime>(tc, dtm =>
                {
                });
            }
            //-----------------------------------------
            conn.AsyncClose(tc);
            tc.WhenFinish(() =>
            {
                stopW.Stop();
                Report.WriteLine("avg:" + stopW.ElapsedTicks);
            });
            tc.BeforeEachTaskBegin(() =>
            {
                Console.WriteLine(tc.CurrentTaskIndex + "/" + tc.TaskCount);
            });
            //----------------------------------------
            tc.Start();
        }
示例#22
0
 public void Setup()
 {
     globalCancellationToken = new CancellationTokenSource();
     taskChain   = new TaskChain();
     currentTask = 0;
 }
示例#23
0
        /// <summary>
        /// 添加任务到任务管线中
        /// </summary>
        private void AddTasksToATBuildPipline(TaskChain taskChain)
        {
            buildTasks.Clear();
            ATBuildPipline.Instance.ClearBuildTasks();


            switch (taskChain)
            {
            case TaskChain.默认任务链:
            {
                #region 默认任务链
                //TODO
                //主要任务链
                #endregion
            }
            break;

            case TaskChain.资源打包:
            {
            }
            break;

            case TaskChain.APK出包:
            {
            }
            break;

            case TaskChain.测试任务链:
            {
                #region 相关测试任务
                //测试
                //for (int i = 0; i < 10; i++)
                //{
                //    ATBuildPipline.Instance.AddBuildTask(new TestTask(Instance));
                //}

                //测试任务
                //ATBuildPipline.Instance.AddBuildTask(new TestFailureTask(Instance));
                //ATBuildPipline.Instance.AddBuildTask(new TestCallBatByThreadTask(Instance));
                //ATBuildPipline.Instance.AddBuildTask(new TestTask(Instance));

                //测试回滚
                for (int i = 0; i < 5; i++)
                {
                    ATBuildPipline.Instance.AddBuildTask(new TestTask(Instance));
                }

                ATBuildPipline.Instance.AddBuildTask(new TestReverseTask(Instance));

                ATBuildPipline.Instance.AddBuildTask(new TestFailureTask(Instance));
                #endregion
            }
            break;
            }

            //获取所有任务
            foreach (var item in ATBuildPipline.Instance.Tasks)
            {
                buildTasks.Add(item);
            }
        }
示例#24
0
        protected override void OnInitialized(EventArgs eventArgs)
        {
            base.OnInitialized(eventArgs);

            try
            {
                instance = this;
                // Update the position and size of the window.
                UpdatePosition();
                // Set the window as NO_ACTIVATE, TOOLWINDOW and TOPMOST,
                WindowStyles.SetExtended(this, WindowStyles.GetExtended(this)
                                         | ExtendedWindowStyle.WS_EX_NOACTIVATE
                                         | ExtendedWindowStyle.WS_EX_TOOLWINDOW
                                         | ExtendedWindowStyle.WS_EX_TOPMOST);

                // Apply the user-selected locale.
                IntlManager.Apply(new CultureInfo(AppState.Current.UserSettings.Locale));
                // Apply the user-selected theme.
                ThemeManager.Apply(AppState.Current.UserSettings.Theme);

                // Initialize the drop shadow.
                _dropShadow = new WindowDropShadow(this)
                {
                    Radius   = 15.0,
                    Strength = 2.0,
                    Opacity  = 0.0,
                };

                // Set the window's view-model.
                _viewModel = new OverviewViewModel();

                InitializeQuickInfoWindow();

                // Request the needed window permissions. (>= Windows 8)
                _clipboardPermission = new UIPermission(PermissionState.Unrestricted)
                {
                    Clipboard = UIPermissionClipboard.AllClipboard
                };

                // Setup the clipboard manager and the according event listeners.
                _clipboardManager = new ClipboardManager(this);
                _clipboardManager.StateChanged += OnClipboardStateChanged;

                // Initially hidden.
                _isVisible   = false;
                _transitions = new TaskChain();

                // Initialize the window message receiver with a name.
                _wmr = new WindowMessageReceiver("MULTICLIP_IPC", null);
                // Setup the IPC handler.
                _wmr.MessageReceived += OnMessageReceived;

                // Initialize and set the low-level mouse hook.
                _mouseHook              = new LowLevelMouseHook();
                _mouseHook.LButtonDown += OnMouseHookButtonDown;
                _mouseHook.RButtonDown += OnMouseHookButtonDown;
                _mouseHook.XButtonDown += OnMouseHookButtonDown;
                _mouseHook.SetHook();

                // Initialize and register the overview hotkey.
                _overviewHotkey          = new GlobalHotkey(HotkeyModfier.Ctrl, Keys.Space);
                _overviewHotkey.Pressed += OnOverviewHotkeyPressed;
                _overviewHotkey.Register();

                // Initialize and register the secure-copy hotkey.
                _secureCopyHotkey          = new GlobalHotkey(HotkeyModfier.Ctrl | HotkeyModfier.Alt, Keys.C);
                _secureCopyHotkey.Pressed += OnSecureCopyHotkeyPressed;
                _secureCopyHotkey.Register();

                // Show the help window on the first run of the app.
                if ((bool)Properties.Settings.Default["IsFirstRun"] == true)
                {
                    Properties.Settings.Default["IsFirstRun"] = false;
                    Properties.Settings.Default.Save();
                    HelpWindow helpWindow = new HelpWindow();
                    helpWindow.Show();
                }

                ClipboardList.ItemsSource = _viewModel.ClipboardItems;

                // When a file-drop item is about to open a subwindow,
                // hide the main window.
                FileDropItem.PreviewShellExecute += delegate
                {
                    if (_isVisible)
                    {
                        HideAsync().GetAwaiter();
                    }
                };
            }
            catch (Exception e)
            {
                _logger.LogCritical(LogEvents.FatalErr, "Failed to initialize the main window!", e);
                Exceptions.NotifyCritical(e);
            }
        }
示例#25
0
 public void Enqueue(TaskChain item)
 {
     m_taskQueue.Enqueue(item);
 }
示例#26
0
 private void CreateHandlers()
 {
     networkCatch = new NetworkTaskChain(Configuration.Configuration.Instance());
     audioCatch   = new AudioTaskChain(Configuration.Configuration.Instance());
     audioCatch.SetSuccesor(networkCatch);
 }
示例#27
0
 public void OnTaskChainEnd(TaskChain taskChain)
 {
     ActionEnd();
 }