root/src/add-ons/kernel/file_systems/netfs/netfs_server_prefs/NetFSServerRoster.h
// NetFSServerRoster.h

#ifndef NETFS_SERVER_ROSTER_H
#define NETFS_SERVER_ROSTER_H

#include <Messenger.h>
#include <OS.h>

class NetFSServerRoster {
public:
                                                                NetFSServerRoster();
                                                                ~NetFSServerRoster();

                        // server
                        bool                            IsServerRunning();
                        status_t                        LaunchServer();
                        status_t                        TerminateServer(bool force = false,
                                                                        bigtime_t timeout = B_INFINITE_TIMEOUT);
                        status_t                        SaveServerSettings();

                        // users
                        status_t                        AddUser(const char* user, const char* password);
                        status_t                        RemoveUser(const char* user);
                        status_t                        GetUsers(BMessage* users);
                        status_t                        GetUserStatistics(const char* user,
                                                                        BMessage* statistics);

                        // shares
                        status_t                        AddShare(const char* share, const char* path);
                        status_t                        RemoveShare(const char* share);
                        status_t                        GetShares(BMessage* shares);
                        status_t                        GetShareUsers(const char* share,
                                                                        BMessage* users);
                        status_t                        GetShareStatistics(const char* share,
                                                                        BMessage* statistics);

                        // permissions
                        status_t                        SetUserPermissions(const char* share,
                                                                        const char* user, uint32 permissions);
                        status_t                        GetUserPermissions(const char* share,
                                                                        const char* user, uint32* permissions);

private:
                        status_t                        _InitMessenger();
                        status_t                        _SendRequest(BMessage* request,
                                                                        BMessage* reply = NULL);

private:
                        BMessenger                      fServerMessenger;
};

#endif  // NETFS_SERVER_ROSTER_H