root/headers/os/net/NetworkRoster.h
/*
 * Copyright 2010, Haiku, Inc. All Rights Reserved.
 * Distributed under the terms of the MIT License.
 */
#ifndef _NETWORK_ROSTER_H
#define _NETWORK_ROSTER_H


#include <Locker.h>
#include <NetworkNotifications.h>
#include <ObjectList.h>

class BMessenger;
class BNetworkInterface;
struct wireless_network;


class BNetworkRoster {
public:
        static  BNetworkRoster&         Default();

                        size_t                          CountInterfaces() const;
                        status_t                        GetNextInterface(uint32* cookie,
                                                                        BNetworkInterface& interface) const;

                        status_t                        AddInterface(const char* name);
                        status_t                        AddInterface(
                                                                        const BNetworkInterface& interface);
                        status_t                        RemoveInterface(const char* name);
                        status_t                        RemoveInterface(
                                                                        const BNetworkInterface& interface);

                        int32                           CountPersistentNetworks() const;
                        status_t                        GetNextPersistentNetwork(uint32* cookie,
                                                                        wireless_network& network) const;
                        status_t                        AddPersistentNetwork(
                                                                        const wireless_network& network);
                        status_t                        RemovePersistentNetwork(const char* name);

                        status_t                        StartWatching(const BMessenger& target,
                                                                        uint32 eventMask);
                        void                            StopWatching(const BMessenger& target);

private:
                                                                BNetworkRoster();
                                                                ~BNetworkRoster();

private:
        static  BNetworkRoster          sDefault;
};


#endif  // _NETWORK_ROSTER_H