Esempio n. 1
0
        public LockProtector(IScriptLibrary scriptLibrary, LockState state)
        {
            _scriptLibrary = scriptLibrary;
            _state         = state;

            EnsureNoDeadLock();
        }
        public ScriptEngine GetEngine()
        {
            const string EngineCacheKey = "engine:";

            string cacheKey = EngineCacheKey + this.SettingsPath;
            var    engine   = (ScriptEngine)Cache.Get(cacheKey);

            if (engine == null)
            {
                System.Diagnostics.Debug.WriteLine("No cached engine for thread {0}", System.Threading.Thread.CurrentThread.ManagedThreadId);
                IScriptLibrary library = this.scriptLibraryBuilder(this);
                engine = ScriptEngine.MakeEngine(this.Settings.ScriptLanguage, this.Logger, this.Settings.Debug, library);

                List <Script.ScriptSourceElement> sourceElements = this.GetSourceElements();

                engine.Load(sourceElements);

                var itemPolicy = new CacheItemPolicy();
                itemPolicy.Priority = CacheItemPriority.NotRemovable;
                itemPolicy.ChangeMonitors.Add(new HostFileChangeMonitor(new List <string>()
                {
                    this.SettingsPath
                }));

                Cache.Set(cacheKey, engine, itemPolicy);
            }

            return(engine);
        }
Esempio n. 3
0
        public override void AddLibrary(string name, IScriptLibrary libraryInstance)
        {
            if (_libraries.ContainsKey(name))
            {
                return;
            }

            _libraries.Add(name, libraryInstance);
        }
Esempio n. 4
0
        /// <summary>
        /// for testing purposes only
        /// </summary>
        /// <param name="scriptLibrary"></param>
        /// <param name="state"></param>
        /// <param name="startprotection"></param>
        internal LockProtector(IScriptLibrary scriptLibrary, LockState state, bool startprotection)
        {
            _scriptLibrary = scriptLibrary;
            _state         = state;

            if (startprotection)
            {
                EnsureNoDeadLock();
            }
        }
Esempio n. 5
0
 public void AddLibrary(string name, IScriptLibrary libraryInstance)
 {
     throw new NotImplementedException();
 }
 public CSharpScriptEngine(ILogEvents logger, bool debug, IScriptLibrary library)
     : base(logger, debug, library)
 {
 }
Esempio n. 7
0
 public abstract void AddLibrary(string name, IScriptLibrary libraryInstance);
        internal static ScriptEngine MakeEngine(string scriptLanguage, ILogEvents logger, bool debug, IScriptLibrary library)
        {
            logger.BuildingScriptEngine(scriptLanguage);
            Type         t      = GetScriptEngineType(scriptLanguage);
            var          ctor   = t.GetConstructor(new Type[] { typeof(ILogEvents), typeof(bool), typeof(IScriptLibrary) });
            ScriptEngine engine = ctor.Invoke(new object[] { logger, debug, library }) as ScriptEngine;

            return(engine);
        }
 protected ScriptEngine(ILogEvents logger, bool debug, IScriptLibrary library)
 {
     this.Logger  = logger;
     this.Debug   = debug;
     this.Library = library;
 }
Esempio n. 10
0
 public LockService(IScriptLibrary scriptLibrary, IdentifierGenerator identifierGenerator)
 {
     _scriptLibrary       = scriptLibrary ?? throw new ArgumentNullException(nameof(scriptLibrary));
     _identifierGenerator = identifierGenerator ?? throw new ArgumentNullException(nameof(identifierGenerator));
 }
Esempio n. 11
0
 protected DotNetScriptEngine(ILogEvents logger, bool debug, IScriptLibrary library)
     : base(logger, debug, library)
 {
 }