SubprocessSystem.h 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. // Copyright (c) 2014-2015, THUNDERBEAST GAMES LLC All rights reserved
  2. // Please see LICENSE.md in repository root for license information
  3. // https://github.com/AtomicGameEngine/AtomicGameEngine
  4. #pragma once
  5. #include <Atomic/Core/Object.h>
  6. #include "Subprocess.h"
  7. using namespace Atomic;
  8. namespace ToolCore
  9. {
  10. EVENT(E_SUBPROCESSOUTPUT, SubprocessOutput)
  11. {
  12. PARAM(P_TEXT, Text); // string
  13. }
  14. EVENT(E_SUBPROCESSCOMPLETE, SubprocessComplete)
  15. {
  16. PARAM(P_PROCESSKEY, ProcessKey); // unsigned
  17. PARAM(P_RETCODE, RetCode); // int (return code of process)
  18. }
  19. class SubprocessSystem : public Object
  20. {
  21. OBJECT(SubprocessSystem);
  22. public:
  23. /// Construct.
  24. SubprocessSystem(Context* context);
  25. /// Destruct.
  26. virtual ~SubprocessSystem();
  27. Subprocess* Launch(const String& command, const Vector<String>& args, const String& initialDirectory = "");
  28. Subprocess* Launch(const String& command, const Vector<String>& args, const String& initialDirectory, const Poco::Process::Env& env);
  29. private:
  30. void HandleUpdate(StringHash eventType, VariantMap& eventData);
  31. Vector<SharedPtr<Subprocess> > processes_;
  32. float updateTimer_;
  33. };
  34. }