xref: /haiku/src/kits/debugger/target_host_interface/local/LocalTargetHostInterface.h (revision 5ac9b506412b11afb993bb52d161efe7666958a5)
1 /*
2  * Copyright 2016, Rene Gollent, rene@gollent.com.
3  * Distributed under the terms of the MIT License.
4  */
5 #ifndef LOCAL_TARGET_HOST_INTERFACE_H
6 #define LOCAL_TARGET_HOST_INTERFACE_H
7 
8 #include "TargetHostInterface.h"
9 
10 
11 class LocalTargetHostInterface : public TargetHostInterface {
12 public:
13 								LocalTargetHostInterface();
14 	virtual						~LocalTargetHostInterface();
15 
16 	virtual	status_t			Init(Settings* settings);
17 	virtual	void				Close();
18 
19 	virtual	bool				IsLocal() const;
20 	virtual	bool				Connected() const;
21 
22 	virtual	TargetHost*			GetTargetHost();
23 
24 	virtual	status_t			Attach(team_id id, thread_id threadID,
25 									DebuggerInterface*& _interface) const;
26 	virtual	status_t			CreateTeam(int commandLineArgc,
27 									const char* const* arguments,
28 									team_id& _teamID) const;
29 	virtual	status_t			LoadCore(const char* coreFilePath,
30 									DebuggerInterface*& _interface,
31 									thread_id& _thread) const;
32 
33 	virtual	status_t			FindTeamByThread(thread_id thread,
34 									team_id& _teamID) const;
35 
36 
37 private:
38 	static	status_t			_PortLoop(void* arg);
39 			status_t			_HandleTeamEvent(team_id team, int32 opcode,
40 									bool& addToWaiters);
41 
42 private:
43 			TargetHost*			fTargetHost;
44 			port_id				fDataPort;
45 			thread_id			fPortWorker;
46 };
47 
48 #endif	// LOCAL_TARGET_HOST_INTERFACE_H
49