xref: /haiku/src/servers/launch/VolumeWatcher.h (revision 0f3fcbe43710609a57479d1fbfde349542953ac8)
1*0f3fcbe4SAxel Dörfler /*
2*0f3fcbe4SAxel Dörfler  * Copyright 2015, Axel Dörfler, axeld@pinc-software.de.
3*0f3fcbe4SAxel Dörfler  * Distributed under the terms of the MIT License.
4*0f3fcbe4SAxel Dörfler  */
5*0f3fcbe4SAxel Dörfler #ifndef VOLUME_WATCHER_H
6*0f3fcbe4SAxel Dörfler #define VOLUME_WATCHER_H
7*0f3fcbe4SAxel Dörfler 
8*0f3fcbe4SAxel Dörfler 
9*0f3fcbe4SAxel Dörfler #include <Handler.h>
10*0f3fcbe4SAxel Dörfler #include <ObjectList.h>
11*0f3fcbe4SAxel Dörfler 
12*0f3fcbe4SAxel Dörfler 
13*0f3fcbe4SAxel Dörfler class VolumeListener {
14*0f3fcbe4SAxel Dörfler public:
15*0f3fcbe4SAxel Dörfler 	virtual						~VolumeListener();
16*0f3fcbe4SAxel Dörfler 
17*0f3fcbe4SAxel Dörfler 	virtual	void				VolumeMounted(dev_t device) = 0;
18*0f3fcbe4SAxel Dörfler 	virtual	void				VolumeUnmounted(dev_t device) = 0;
19*0f3fcbe4SAxel Dörfler };
20*0f3fcbe4SAxel Dörfler 
21*0f3fcbe4SAxel Dörfler 
22*0f3fcbe4SAxel Dörfler class VolumeWatcher : public BHandler {
23*0f3fcbe4SAxel Dörfler public:
24*0f3fcbe4SAxel Dörfler 								VolumeWatcher();
25*0f3fcbe4SAxel Dörfler 	virtual						~VolumeWatcher();
26*0f3fcbe4SAxel Dörfler 
27*0f3fcbe4SAxel Dörfler 			void				AddListener(VolumeListener* listener);
28*0f3fcbe4SAxel Dörfler 			void				RemoveListener(VolumeListener* listener);
29*0f3fcbe4SAxel Dörfler 			int32				CountListeners() const;
30*0f3fcbe4SAxel Dörfler 
31*0f3fcbe4SAxel Dörfler 	virtual	void				MessageReceived(BMessage* message);
32*0f3fcbe4SAxel Dörfler 
33*0f3fcbe4SAxel Dörfler 	static	void				Register(VolumeListener* listener);
34*0f3fcbe4SAxel Dörfler 	static	void				Unregister(VolumeListener* listener);
35*0f3fcbe4SAxel Dörfler 
36*0f3fcbe4SAxel Dörfler protected:
37*0f3fcbe4SAxel Dörfler 			BObjectList<VolumeListener>
38*0f3fcbe4SAxel Dörfler 								fListeners;
39*0f3fcbe4SAxel Dörfler };
40*0f3fcbe4SAxel Dörfler 
41*0f3fcbe4SAxel Dörfler 
42*0f3fcbe4SAxel Dörfler #endif // VOLUME_WATCHER_H
43