Exemple #1
0
        /// <summary>
        /// 將main loop執行起來。若前有main loop則終結
        /// </summary>
        /// <returns></returns>
        public string runNewMainLoop()
        {
            string      ret    = "";
            string      callId = callExe.genCallId();
            clsMainLoop cmli   = new clsMainLoop(callId);

            cmli.serviceName  = "initialize";
            cmli.callTypeName = "object";
            cmli.callPara     = null;
            string json = jsonUtl.encodeJson(cmli);

            ret = ce.MakeAcall(callId, json);
            if (ret.Length > 0)
            {
                return(ret);
            }
            ret = ce.spawnEXE(callId, cmli.serviceName);

            //change to use hangire... sample
            //BackgroundJob.Enqueue(() => Console.WriteLine("home action3!"));

            // 來,我們按照hangfire改作法
            //1. 所有呼叫改為,可各自設定為同步呼叫或常駐呼叫
            //2. 同步呼叫就是原本傳統寫法,常駐呼叫就是叫一隻console起來跑
            //3. 所以就取消main loop的作法
            //4. console要顯示畫面,然後用console.write...顯示狀態,這樣
            //   就可以看得到console是否已經執行完成,或掛掉
            //5. 另外提供一個清除所有呼叫紀錄的按鍵。
            //6. 已經完成的呼叫,寫一筆紀錄到完成的目錄,且將呼叫紀錄刪除
            return(ret);
        }
Exemple #2
0
        public ActionResult Action1(EplAction1vm vm)// firstName, string lastName)
        {
            vm.cmdTxt = vm.cmd;
            callExe      ce     = new callExe();
            string       callId = callExe.genCallId();
            clsHelloTest cht    = new clsHelloTest(callId);
            string       json   = jsonUtl.encodeJson(cht);
            string       err    = ce.MakeAcall(callId,
                                               reflectionUtl.TypeName <clsHelloTest>()
                                               , json);

            return(View(vm));
        }
Exemple #3
0
        public string persistentCall(string systemName, string
                                     serviceName, string methodName, string paraType
                                     , string paraJson, string returnType, out string callId
                                     , out string returnJson)
        {
            // persistentCall
            //1. call status objct
            //2. run exe
            string ret = "";

            returnJson = "";
            callId     = callExe.genCallId();
            try
            {
                clsCallStatus ccs = new clsCallStatus(callId);
                ccs.systemName     = systemName;
                ccs.callId         = callId;
                ccs.serviceName    = serviceName;
                ccs.methodName     = methodName;
                ccs.callTypeName   = paraType;
                ccs.callTime       = DateTime.Now;
                ccs.callPara       = paraJson;
                ccs.returnTypeName = returnType;
                //ccs.callFilepath = "..."; // todo !!...
                string json = jsonUtl.encodeJson(ccs);
                ret = ce.MakeAcall(callId, json);
                if (ret.Length > 0)
                {
                    throw new Exception(ret);
                }
                dbg.o("before spawn exe");
                // change to use hangire...
                string callIdOut = callId;
                BackgroundJob.Enqueue(() =>
                                      ce.spawnEXE(callIdOut, serviceName)
                                      );
                dbg.o("after spawn exe");
            }
            catch (Exception ex)
            {
                Exception inner = ex;
                while (inner.InnerException != null)
                {
                    inner = inner.InnerException;
                }
                ret = ex.Message + "\n" + ex.StackTrace;
            }
            return(ret);
        }