Ejemplo n.º 1
0
        public static int Save(MachineInstance machiniInstance)
        {
            var a = new MachineInstance
            {
                MachineInsId   = machiniInstance.MachineInsId,
                MachineInsName = machiniInstance.MachineInsName,
                MachineInsDate = machiniInstance.MachineInsDate
            };

            using (_d = new DataRepository <MachineInstance>())
            {
                if (machiniInstance.MachineInsId > 0)
                {
                    _d.Update(a);
                }
                else
                {
                    _d.Add(a);
                }

                _d.SaveChanges();
            }

            return(a.MachineInsId);
        }
Ejemplo n.º 2
0
        public void OnAttach(MachineInstance machine, out IVariable[] variables, out MethodInfo[] methods)
        {
            UpdateState();

            variables = _state;
            methods   = AttachMethods();
        }
Ejemplo n.º 3
0
 public static void PrepareThread(this MachineInstance machine, RuntimeEnvironment env)
 {
     if (!machine.IsRunning)
     {
         env.LoadMemory(machine);
     }
 }
Ejemplo n.º 4
0
        public void OnAttach(MachineInstance machine, out IVariable[] variables, out MethodInfo[] methods, out IRuntimeContextInstance instance)
        {
            UpdateState();

            variables = _state;
            int totalMethods = METHOD_COUNT + _module.Methods.Length;

            methods = new MethodInfo[totalMethods];

            var moduleMethods = _module.Methods.Select(x => x.Signature).ToArray();

            for (int i = 0; i < totalMethods; i++)
            {
                if (MethodDefinedInScript(i))
                {
                    methods[i] = moduleMethods[i];
                }
                else
                {
                    methods[i] = GetOwnMethod(i);
                }
            }

            instance = this;

            _machine = machine;
        }
Ejemplo n.º 5
0
 public void LoadMemory(MachineInstance machine)
 {
     machine.Cleanup();
     foreach (var item in AttachedContexts)
     {
         machine.AttachContext(item);
     }
     machine.ContextsAttached();
 }
Ejemplo n.º 6
0
        public virtual void AttachToThread(MachineInstance machine)
        {
            _machinesOnThreads[Thread.CurrentThread.ManagedThreadId] = new MachineWaitToken()
            {
                Machine = machine
            };

            machine.MachineStopped += Machine_MachineStopped;
        }
Ejemplo n.º 7
0
 public void OnAttach(MachineInstance machine,
                      out IVariable[] variables,
                      out MethodInfo[] methods,
                      out IRuntimeContextInstance instance)
 {
     variables = _state;
     methods   = GetMethods().ToArray();
     instance  = this;
 }
Ejemplo n.º 8
0
        public ScriptingEngine()
        {
            _machine = MachineInstance.Current;

            TypeManager.Initialize(new StandartTypeManager());
            GlobalsManager.Reset();
            ContextDiscoverer.DiscoverClasses(System.Reflection.Assembly.GetExecutingAssembly());

            _scriptFactory = new ScriptSourceFactory();
        }
Ejemplo n.º 9
0
        public static bool Delete(MachineInstance machineInstance)
        {
            using (_d = new DataRepository <MachineInstance>())
            {
                _d.Delete(machineInstance);
                _d.SaveChanges();
            }

            return(true);
        }
Ejemplo n.º 10
0
 public void Initialize(MachineInstance runner)
 {
     _machine = runner;
     _machine.StateConsistentOperation(() =>
     {
         _machine.SetModule(_module);
         _machine.AttachContext(this, true);
         _machine.ExecuteModuleBody();
     });
 }
Ejemplo n.º 11
0
        public void OnAttach(MachineInstance machine, out IVariable[] variables, out MethodInfo[] methods, out IRuntimeContextInstance instance)
        {
            UpdateState();

            variables = _state;
            methods   = AttachMethods();
            instance  = this;

            _machine = machine;
        }
Ejemplo n.º 12
0
 public void Initialize(MachineInstance runner)
 {
     _machine = runner;
     _machine.StateConsistentOperation(() =>
     {
         _machine.SetModule(_module);
         _machine.AttachContext(this, true);
         _machine.ExecuteModuleBody();
     });
 }
Ejemplo n.º 13
0
        public void Initialize(MachineInstance runner)
        {
            _machine = runner;
            _machine.StateConsistentOperation(() =>
            {
                _machine.SetModule(_module);
                _machine.AttachContext(this, true);
                _machine.ExecuteModuleBody();
            });

            var methId = GetScriptMethod("ПриСозданииОбъекта", "OnObjectCreate");
            int constructorParamsCount = ConstructorParams.Count();

            if (methId > -1)
            {
                bool hasParamsError = false;
                var  procInfo       = GetMethodInfo(methId);

                int procParamsCount = procInfo.Params.Count();

                if (procParamsCount < constructorParamsCount)
                {
                    hasParamsError = true;
                }

                int reqParams = 0;
                foreach (var itm in procInfo.Params)
                {
                    if (!itm.HasDefaultValue)
                    {
                        reqParams++;
                    }
                }
                if (reqParams > constructorParamsCount)
                {
                    hasParamsError = true;
                }
                if (hasParamsError)
                {
                    throw new RuntimeException("Параметры конструктора: "
                                               + "необходимых параметров: " + Math.Min(procParamsCount, reqParams).ToString()
                                               + ", передано параметров " + constructorParamsCount.ToString()
                                               );
                }

                CallAsProcedure(methId, ConstructorParams);
            }
            else
            {
                if (constructorParamsCount > 0)
                {
                    throw new RuntimeException("Конструктор не определен, но переданы параметры конструктора.");
                }
            }
        }
Ejemplo n.º 14
0
        private void SetInstance(MachineInstance instance)
        {
            m_Instance = instance;
            m_Instance.OnMachineExit += M_Instance_OnMachineExit;;
            m_IgnoreClose             = false;

            lblRoot.Text       = "Root: " + instance.Profile.ProfileRoot;
            lbl_PID.Text       = "PID: " + instance.PID;
            lbl_Profile.Text   = "Profile: " + instance.Profile.Name;
            rtb_StartArgs.Text = instance.Profile.StartArguments;
        }
Ejemplo n.º 15
0
        public void OnAttach(MachineInstance machine, out IVariable[] variables, out MethodInfo[] methods, out IRuntimeContextInstance instance)
        {
            variables = new IVariable[this.Count];
            for (int i = 0; i < variables.Length; i++)
            {
                variables[i] = Variable.CreateContextPropertyReference(this, i);
            }

            methods  = new MethodInfo[0];
            instance = this;
        }
Ejemplo n.º 16
0
        public void OnAttach(MachineInstance machine, out IVariable[] variables, out MethodInfo[] methods, out IRuntimeContextInstance instance)
        {
            variables = new IVariable[this.Count];
            for (int i = 0; i < variables.Length; i++)
            {
                variables[i] = Variable.CreateContextPropertyReference(this, i);
            }

            methods = new MethodInfo[0];
            instance = this;
        }
Ejemplo n.º 17
0
 public void OnAttach(MachineInstance machine,
                      out IVariable[] variables,
                      out MethodInfo[] methods)
 {
     variables = _state;
     methods   = new MethodInfo[_methods.Count];
     for (int i = 0; i < _methods.Count; i++)
     {
         methods[i] = _methods.GetMethodInfo(i);
     }
 }
Ejemplo n.º 18
0
        public void OnAttach(MachineInstance machine, out IVariable[] variables, out MethodInfo[] methods)
        {
            var state = _osGlobal.GetProperties().ToArray();

            variables = new IVariable[state.Length];
            for (int i = 0; i < state.Length; i++)
            {
                variables[i] = Variable.CreateContextPropertyReference(_osGlobal, i, state[i].Identifier);
            }

            methods = _osGlobal.GetMethods().ToArray();
        }
Ejemplo n.º 19
0
        private void btn_Run_Click(object sender, EventArgs e)
        {
            string item = cb_Profile.SelectedItem.ToString();

            Machine m = Machine.Create(MachineProfile.GetByName(item));

            MachineInstance instance = m.CreateInstance();

            MachineInstanceControl instanceControl = new MachineInstanceControl(instance);

            instanceControl.Show();
        }
Ejemplo n.º 20
0
        protected override void OnMachineStopped(MachineInstance machine, MachineStopReason reason)
        {
            if (!CallbackChannelIsReady())
            {
                return; // нет подписчика
            }
            var handle = GetTokenForThread(Thread.CurrentThread.ManagedThreadId);

            handle.ThreadEvent.Reset();
            _eventChannel.ThreadStopped(1, ConvertStopReason(reason));
            handle.ThreadEvent.Wait();
        }
Ejemplo n.º 21
0
        public ScriptingEngine()
        {
            _machine = MachineInstance.Current;

            TypeManager.Initialize(new StandartTypeManager());
            TypeManager.RegisterType("Сценарий", typeof(UserScriptContextInstance));

            GlobalsManager.Reset();
            AttachAssembly(System.Reflection.Assembly.GetExecutingAssembly());

            _scriptFactory     = new ScriptSourceFactory();
            DirectiveResolvers = new DirectiveMultiResolver();
        }
Ejemplo n.º 22
0
        public void OnAttach(MachineInstance machine, out IVariable[] variables, out MethodInfo[] methods)
        {
            variables = new IVariable[this.Count];
            var props = GetProperties().OrderBy(x => x.Value).Select(x => x.Key).ToArray();

            Debug.Assert(props.Length == variables.Length);

            for (var i = 0; i < variables.Length; i++)
            {
                variables[i] = Variable.CreateContextPropertyReference(this, i, props[i]);
            }

            methods = new MethodInfo[0];
        }
Ejemplo n.º 23
0
        private void btnRunWithBios_Click(object sender, EventArgs e)
        {
            string item = cb_Profile.SelectedItem.ToString();

            MachineProfile p = MachineProfile.GetByName(item);

            if (ofdBios.ShowDialog() == DialogResult.OK)
            {
                p.BiosPath = ofdBios.FileName;
                Machine m = Machine.Create(p);

                MachineInstance instance = m.CreateInstance();

                MachineInstanceControl instanceControl = new MachineInstanceControl(instance);
                instanceControl.Show();
            }
        }
 public void OnMachineReady(MachineInstance instance)
 {
     _machine = instance;
     _machine.MachineStopped += MachineStopHanlder;
 }
Ejemplo n.º 25
0
 public override void OnAttach(MachineInstance machine, out IVariable[] variables, out MethodInfo[] methods)
 {
     variables = new [] { Variable.CreateContextPropertyReference(this, 0, GetPropName(0)) };
     methods   = new MethodInfo[0];
 }
Ejemplo n.º 26
0
 public MachineStopManager(MachineInstance runner)
 {
     _machine = runner;
 }
Ejemplo n.º 27
0
 public MachineInstanceControl(MachineInstance instance)
 {
     InitializeComponent();
     SetInstance(instance);
 }
Ejemplo n.º 28
0
 public void OnAttach(MachineInstance machine, out IVariable[] variables, out MethodInfo[] methods, out IRuntimeContextInstance instance)
 {
     variables = new IVariable[0];
     methods   = (MethodInfo[])GetMethods();
     instance  = this;
 }
Ejemplo n.º 29
0
        public void OnAttach(MachineInstance machine, out IVariable[] variables, out MethodInfo[] methods, out IRuntimeContextInstance instance)
        {
            UpdateState();

            variables = _state;
            methods = AttachMethods();
            instance = this;

            _machine = machine;

        }
Ejemplo n.º 30
0
 protected abstract void OnMachineStopped(MachineInstance machine, MachineStopReason reason);
Ejemplo n.º 31
0
 public void OnAttach(MachineInstance machine, out IVariable[] variables, out MethodInfo[] methods, out IRuntimeContextInstance instance)
 {
     variables = new IVariable[0];
     methods = (MethodInfo[])GetMethods();
     instance = this;
 }
Ejemplo n.º 32
0
 public void Initialize(MachineInstance runner)
 {
     _machine = runner;
     OnInstanceCreation();
 }
Ejemplo n.º 33
0
 public void OnAttach(MachineInstance machine, out IVariable[] variables, out MethodInfo[] methods)
 {
     variables = new IVariable[0];
     methods   = (MethodInfo[])GetMethods();
 }
Ejemplo n.º 34
0
 public void OnAttach(MachineInstance machine, 
     out IVariable[] variables, 
     out MethodInfo[] methods, 
     out IRuntimeContextInstance instance)
 {
     variables = _state;
     methods = GetMethods().ToArray();
     instance = this;
 }
Ejemplo n.º 35
0
 public virtual void OnAttach(MachineInstance machine, out IVariable[] variables, out MethodInfo[] methods)
 {
     variables = new IVariable[0];
     methods   = this.GetMethods().ToArray();
 }