1/* 2 * Copyright 2016, Rene Gollent, rene@gollent.com. 3 * Distributed under the terms of the MIT License. 4 */ 5#ifndef CONNECTION_CONFIG_HANDLER_ROSTER_H 6#define CONNECTION_CONFIG_HANDLER_ROSTER_H 7 8#include <Locker.h> 9#include <ObjectList.h> 10#include <String.h> 11 12#include "ConnectionConfigView.h" 13 14 15class ConnectionConfigHandler; 16class TargetHostInterfaceInfo; 17 18 19class ConnectionConfigHandlerRoster { 20public: 21 ConnectionConfigHandlerRoster(); 22 virtual ~ConnectionConfigHandlerRoster(); 23 24 static ConnectionConfigHandlerRoster* Default(); 25 static status_t CreateDefault(); 26 static void DeleteDefault(); 27 28 bool Lock() { return fLock.Lock(); } 29 void Unlock() { fLock.Unlock(); } 30 31 status_t Init(); 32 33 bool HasHandlerFor(TargetHostInterfaceInfo* info) 34 const; 35 36 status_t CreateConfigView(TargetHostInterfaceInfo* info, 37 ConnectionConfigView::Listener* listener, 38 ConnectionConfigView*& _view) const; 39 40private: 41 typedef BObjectList<ConnectionConfigHandler> HandlerList; 42 43private: 44 bool _GetHandler(const BString& name, 45 ConnectionConfigHandler*& _handler) const; 46 status_t _RegisterHandlers(); 47 48private: 49 BLocker fLock; 50 static ConnectionConfigHandlerRoster* sDefaultInstance; 51 52 HandlerList fConfigHandlers; 53}; 54 55#endif // CONNECTION_CONFIG_HANDLER_ROSTER_H 56