コード例 #1
0
        private CompiledScript CompileScript(string script, string fileName)
        {
            IntPtr prelude = Js1.CompilePrelude(script, fileName, _loadModuleDelegate, _logDelegate);

            CompiledScript.CheckResult(prelude, disposeScriptOnException: true);
            return(new CompiledScript(prelude, fileName));
        }
コード例 #2
0
ファイル: PreludeScript.cs プロジェクト: tubo70/EventStore
        private CompiledScript CompileScript(string script, string fileName)
        {
            ScheduleTerminateExecution();
            IntPtr prelude = Js1.CompilePrelude(
                script, fileName, _loadModuleDelegate, _enterCancellableRegion, _exitCancellableRegion, _logDelegate);

            CancelTerminateExecution();
            CompiledScript.CheckResult(prelude, false, disposeScriptOnException: true);
            return(new CompiledScript(prelude, fileName));
        }
コード例 #3
0
 private CompiledScript CompileScript(string script, string fileName)
 {
     try
     {
         var attempts = 3;
         var prelude  = default(IntPtr);
         do
         {
             attempts--;
             try
             {
                 ScheduleTerminateExecution();
                 prelude = Js1.CompilePrelude(
                     script, fileName, _loadModuleDelegate, _enterCancellableRegion, _exitCancellableRegion,
                     _logDelegate);
                 CancelTerminateExecution();
                 CompiledScript.CheckResult(prelude, false, disposeScriptOnException: true);
             }
             catch (Js1Exception ex)
             {
                 if (attempts > 0 && (ex.ErrorCode == -1 || ex.ErrorCode == -2))
                 {
                     // timeouts
                     Thread.Sleep(2000);
                 }
                 else
                 {
                     throw;
                 }
             }
         } while (prelude == default(IntPtr));
         return(new CompiledScript(prelude));
     }
     catch (DllNotFoundException ex)
     {
         Log.Info("{0}\n{1}\n{2}", ex.ToString(), ex.Message, ex.StackTrace);
         throw new ApplicationException(
                   "The projection subsystem failed to load a libjs1.so/js1.dll/... or one of its dependencies.  The original error message is: "
                   + ex.Message, ex);
     }
 }