Exemplo n.º 1
0
    void StartProcess (TProcess.TName name)
    {
      if (m_Process.ContainsKey (name)) {
        var currentProcess = m_Process [name];

        if (currentProcess.HasExited) {
          currentProcess.Start ();
        }
      }

      else {
        var moduleKey = TProcess.ModuleKey [name];
        var processExecutable = TProcess.ModuleExecutable [name];

        Process process = new Process { StartInfo = new ProcessStartInfo (processExecutable, moduleKey) };

        try {
          process.Start ();
          m_Process.Add (name, process);
        }

        catch (Exception) {
          string error = $"Process --{processExecutable}-- NOT FOUND! Launcher will ABORT";
          throw new Exception (error);
        }
      }
    }
Exemplo n.º 2
0
    void StartProcessDispatcher (TProcess.TName name)
    {
      StartProcess (name);

      Model.MenuOnly ();
      ApplyChanges ();
    }
Exemplo n.º 3
0
    internal void ProcessAlive (TProcess.TName name, bool alive)
    {
      if (m_Process.ContainsKey (name)) {
        m_Process [name] = alive;
      }

      else {
        m_Process.Add (name, alive);
      }
    }
Exemplo n.º 4
0
    void RemoveProcess (TProcess.TName name)
    {
      // remove process
      if (m_Process.ContainsKey (name)) {
        try {
          var process = m_Process [name];

          if (process.HasExited.IsFalse ()) {
            process.Kill ();
          }

          m_Process.Remove (name);

          if (m_Process.Count.Equals (0)) {
            Model.EnableAll ();
            ApplyChanges ();
          }
        }

        catch (Exception ex) {
          throw new Exception (ex.Message);
        }
      }
    }
Exemplo n.º 5
0
    void OnCommunicationHandle (object sender, TMessagingEventArgs<TDataComm> e)
    {
      TProcess.TName module = (TProcess.TName) Enum.Parse (typeof (TProcess.TName), e.Data.ClientName);

      switch (module) {
        case TProcess.TName.ModuleSettings: {
            switch (e.Data.Command) {
              case TCommandComm.Shutdown: {
                  RemoveProcess (module);
                }
                break;

              case TCommandComm.Closed: {
                  RemoveProcess (module);
                  Model.EnableAll ();
                  ApplyChanges ();
                }
                break;

              case TCommandComm.Success: {
                  Model.SettingsValidated ();
                  ApplyChanges ();
                }
                break;

              case TCommandComm.Error: {
                  Model.SettingsHasError ();
                  ApplyChanges ();

                  THelper.DispatcherLater (RemoveProcessPartialDispatcher);
                }
                break;
            }
          }
          break;

        case TProcess.TName.GadgetMaterial: {
            switch (e.Data.Command) {
              case TCommandComm.Closed: {
                  RemoveProcess (module);
                }
                break;
            }
          }
          break;

        case TProcess.TName.GadgetTarget: {
            switch (e.Data.Command) {
              case TCommandComm.Closed: {
                  RemoveProcess (module);
                }
                break;
            }
          }
          break;

        case TProcess.TName.GadgetTest: {
            switch (e.Data.Command) {
              case TCommandComm.Closed: {
                  RemoveProcess (module);
                }
                break;
            }
          }
          break;

        case TProcess.TName.GadgetRegistration: {
            switch (e.Data.Command) {
              case TCommandComm.Closed: {
                  RemoveProcess (module);
                }
                break;
            }
          }
          break;

        case TProcess.TName.GadgetResult: {
            switch (e.Data.Command) {
              case TCommandComm.Closed: {
                  RemoveProcess (module);
                }
                break;
            }
          }
          break;

        case TProcess.TName.GadgetReport: {
            switch (e.Data.Command) {
              case TCommandComm.Closed: {
                  RemoveProcess (module);
                }
                break;
            }
          }
          break;
      }
    }
Exemplo n.º 6
0
 bool IsProcessAlive (TProcess.TName name)
 {
   return (m_Process.ContainsKey (name) ? m_Process [name] : false);
 }