SubprocessSystem.h 1.2 KB

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