xref: /haiku/src/servers/media/AppManager.h (revision f2b4344867e97c3f4e742a1b4a15e6879644601a)
1 /*
2  * Copyright 2002, Marcus Overhagen. All rights reserved.
3  * Distributed under the terms of the MIT License.
4  */
5 #ifndef APP_MANAGER_H
6 #define APP_MANAGER_H
7 
8 
9 #include <map>
10 
11 #include <Locker.h>
12 #include <Messenger.h>
13 
14 
15 class AppManager : BLocker {
16 public:
17 								AppManager();
18 								~AppManager();
19 
20 			status_t			RegisterTeam(team_id team,
21 									const BMessenger& messenger);
22 			status_t			UnregisterTeam(team_id team);
23 			bool				HasTeam(team_id team);
24 
25 			team_id				AddOnServerTeam();
26 
27 			status_t			SendMessage(team_id team, BMessage* message);
28 
29 			void				Dump();
30 
31 private:
32 			void				_CleanupTeam(team_id team);
33 			void				_TeamDied(team_id team);
34 
35 	static	status_t			_BigBrotherEntry(void* self);
36 			void				_BigBrother();
37 
38 private:
39 			typedef std::map<team_id, BMessenger> AppMap;
40 
41 			AppMap				fMap;
42 			thread_id			fBigBrother;
43 			sem_id				fQuit;
44 };
45 
46 
47 #endif // APP_MANAGER_H
48