xref: /haiku/headers/os/net/NetworkRoster.h (revision 3b7b927dd01fc96efcda618430851e691ebdb313)
1ff1b1ac7SAxel Dörfler /*
2ff1b1ac7SAxel Dörfler  * Copyright 2010, Haiku, Inc. All Rights Reserved.
3ff1b1ac7SAxel Dörfler  * Distributed under the terms of the MIT License.
4ff1b1ac7SAxel Dörfler  */
5ff1b1ac7SAxel Dörfler #ifndef _NETWORK_ROSTER_H
6ff1b1ac7SAxel Dörfler #define _NETWORK_ROSTER_H
7ff1b1ac7SAxel Dörfler 
8ff1b1ac7SAxel Dörfler 
9c2808ea7SAxel Dörfler #include <Locker.h>
101d56eab0SAxel Dörfler #include <NetworkNotifications.h>
11*905f910eSStefano Ceccherini #include <ObjectList.h>
12ff1b1ac7SAxel Dörfler 
13ff1b1ac7SAxel Dörfler class BMessenger;
14ff1b1ac7SAxel Dörfler class BNetworkInterface;
157d7b9632SMichael Lotz struct wireless_network;
16ff1b1ac7SAxel Dörfler 
17ff1b1ac7SAxel Dörfler 
18ff1b1ac7SAxel Dörfler class BNetworkRoster {
19ff1b1ac7SAxel Dörfler public:
20bf58f252SAxel Dörfler 	static	BNetworkRoster&		Default();
21ff1b1ac7SAxel Dörfler 
22c2808ea7SAxel Dörfler 			size_t				CountInterfaces() const;
23c2808ea7SAxel Dörfler 			status_t			GetNextInterface(uint32* cookie,
24c2808ea7SAxel Dörfler 									BNetworkInterface& interface) const;
25ff1b1ac7SAxel Dörfler 
262977e788SAxel Dörfler 			status_t			AddInterface(const char* name);
27ff1b1ac7SAxel Dörfler 			status_t			AddInterface(
28ff1b1ac7SAxel Dörfler 									const BNetworkInterface& interface);
292977e788SAxel Dörfler 			status_t			RemoveInterface(const char* name);
30ff1b1ac7SAxel Dörfler 			status_t			RemoveInterface(
31ff1b1ac7SAxel Dörfler 									const BNetworkInterface& interface);
32ff1b1ac7SAxel Dörfler 
337d7b9632SMichael Lotz 			int32				CountPersistentNetworks() const;
347d7b9632SMichael Lotz 			status_t			GetNextPersistentNetwork(uint32* cookie,
357d7b9632SMichael Lotz 									wireless_network& network) const;
367d7b9632SMichael Lotz 			status_t			AddPersistentNetwork(
377d7b9632SMichael Lotz 									const wireless_network& network);
387d7b9632SMichael Lotz 			status_t			RemovePersistentNetwork(const char* name);
397d7b9632SMichael Lotz 
40ff1b1ac7SAxel Dörfler 			status_t			StartWatching(const BMessenger& target,
41ff1b1ac7SAxel Dörfler 									uint32 eventMask);
42ff1b1ac7SAxel Dörfler 			void				StopWatching(const BMessenger& target);
43ff1b1ac7SAxel Dörfler 
44ff1b1ac7SAxel Dörfler private:
45ff1b1ac7SAxel Dörfler 								BNetworkRoster();
46ff1b1ac7SAxel Dörfler 								~BNetworkRoster();
47c2808ea7SAxel Dörfler 
48c2808ea7SAxel Dörfler private:
49c2808ea7SAxel Dörfler 	static	BNetworkRoster		sDefault;
50ff1b1ac7SAxel Dörfler };
51ff1b1ac7SAxel Dörfler 
52ff1b1ac7SAxel Dörfler 
53ff1b1ac7SAxel Dörfler #endif	// _NETWORK_ROSTER_H
54