Began re-writing the PTracePortal code, in the vain hope that it might help.
[aesalon.git] / src / interface / ProgramManager.h
blob2019a8ef65675cf5cbe68df173d173808daebbbd
1 #ifndef AESALON_INTERFACE_PROGRAM_MANAGER_H
2 #define AESALON_INTERFACE_PROGRAM_MANAGER_H
4 #include "misc/SmartPointer.h"
5 #include "platform/BidirectionalPipe.h"
6 #include "platform/ArgumentList.h"
7 #include "PTracePortal.h"
8 #include "elf/Parser.h"
9 #include "dwarf/Parser.h"
11 namespace Aesalon {
12 namespace Interface {
14 class ProgramManager {
15 private:
16 Misc::SmartPointer<Platform::BidirectionalPipe> bi_pipe;
17 Misc::SmartPointer<Platform::ArgumentList> argument_list;
19 bool running;
21 Misc::SmartPointer<PTracePortal> ptrace_portal;
23 Misc::SmartPointer<ELF::Parser> elf_parser;
24 Misc::SmartPointer<DWARF::Parser> dwarf_parser;
25 public:
26 ProgramManager(Misc::SmartPointer<Platform::ArgumentList> argument_list);
27 virtual ~ProgramManager() {}
29 void execute();
30 void wait();
31 void handle();
33 Misc::SmartPointer<Platform::ArgumentList> get_argument_list() const { return argument_list; }
35 bool is_running() const { return running; }
38 } // namespace Interface
39 } // namespace Aesalon
41 #endif