* Copyright 2016, Rene Gollent, rene@gollent.com.
* Distributed under the terms of the MIT License.
*/
#ifndef CONNECTION_CONFIG_HANDLER_ROSTER_H
#define CONNECTION_CONFIG_HANDLER_ROSTER_H
#include <Locker.h>
#include <ObjectList.h>
#include <String.h>
#include "ConnectionConfigView.h"
class ConnectionConfigHandler;
class TargetHostInterfaceInfo;
class ConnectionConfigHandlerRoster {
public:
ConnectionConfigHandlerRoster();
virtual ~ConnectionConfigHandlerRoster();
static ConnectionConfigHandlerRoster* Default();
static status_t CreateDefault();
static void DeleteDefault();
bool Lock() { return fLock.Lock(); }
void Unlock() { fLock.Unlock(); }
status_t Init();
bool HasHandlerFor(TargetHostInterfaceInfo* info)
const;
status_t CreateConfigView(TargetHostInterfaceInfo* info,
ConnectionConfigView::Listener* listener,
ConnectionConfigView*& _view) const;
private:
typedef BObjectList<ConnectionConfigHandler, true> HandlerList;
private:
bool _GetHandler(const BString& name,
ConnectionConfigHandler*& _handler) const;
status_t _RegisterHandlers();
private:
BLocker fLock;
static ConnectionConfigHandlerRoster* sDefaultInstance;
HandlerList fConfigHandlers;
};
#endif