Exemplo n.º 1
0
 public bool Execute(string cmd, int threadId)
 {
     if (!string.IsNullOrEmpty(cmd))
     {
         int        tid = FindFreeThread(threadId);
         IRTSThread t   = tid == -1 ? null : mThreads[tid];
         if (t == null)
         {
             return(false);
         }
         mCompiler.reset();
         mCompiler.loadSource(cmd);
         while (mCompiler.isCompiling())
         {
             IRTSDefine.Error error = mCompiler.onCompile(mEngine);
             if (error != 0)
             {
                 logError("rts compile error:" + RTSUtil.getEnumDescript(typeof(IRTSDefine.Error), (int)error) + "-" + mCompiler.getCompilingLinker());
                 return(false);
             }
         }
         IRTSLinker root = mCompiler.getRootLinker();
         if (root != null)
         {
             bool ret = t.loadRunner(root.createRunner());
             mExecUpdate |= ret;
             return(ret);
         }
         return(false);
     }
     return(false);
 }
Exemplo n.º 2
0
        public object ExecuteImmediate(string cmd)
        {
            mCompiler.reset();
            mCompiler.loadSource(cmd);
            while (mCompiler.isCompiling())
            {
                IRTSDefine.Error error = mCompiler.onCompile(mEngine);
                if (error != 0)
                {
                    logError("rts compile error:" + RTSUtil.getEnumDescript(typeof(IRTSDefine.Error), (int)error) + "-" + mCompiler.getCompilingLinker());
                    return(null);
                }
            }
            IRTSLinker root = mCompiler.getRootLinker();

            if (root != null)
            {
                mImmediateT.loadRunner(root.createRunner());
                while (!mImmediateT.isFinished())
                {
                    try
                    {
                        mImmediateT.run(mEngine);
                    }
                    catch (System.Exception ex)
                    {
                        mImmediateT.catchError(IRTSDefine.Error.Runtime_IndexOutOfBounds, ex.ToString());
                        break;
                    }
                }
                return(mImmediateT.getOutput());
            }
            else
            {
                return(null);
            }
        }