/* * Copyright 2016, Rene Gollent, rene@gollent.com. * Distributed under the terms of the MIT License. */ #ifndef TARGET_HOST_INTERFACE_ROSTER_H #define TARGET_HOST_INTERFACE_ROSTER_H #include #include #include #include "TargetHostInterface.h" class Settings; class TargetHostInterfaceInfo; class TargetHostInterfaceRoster : private TargetHostInterface::Listener { public: class Listener; TargetHostInterfaceRoster(); virtual ~TargetHostInterfaceRoster(); static TargetHostInterfaceRoster* Default(); static status_t CreateDefault(Listener* listener); static void DeleteDefault(); bool Lock() { return fLock.Lock(); } void Unlock() { fLock.Unlock(); } status_t Init(Listener* listener); status_t RegisterInterfaceInfos(); int32 CountInterfaceInfos() const; TargetHostInterfaceInfo* InterfaceInfoAt(int32 index) const; status_t CreateInterface(TargetHostInterfaceInfo* info, Settings* settings, TargetHostInterface*& _interface); int32 CountActiveInterfaces() const; TargetHostInterface* ActiveInterfaceAt(int32 index) const; int32 CountRunningTeamDebuggers() const { return fRunningTeamDebuggers; } // TargetHostInterface::Listener virtual void TeamDebuggerStarted(TeamDebugger* debugger); virtual void TeamDebuggerQuit(TeamDebugger* debugger); virtual void TargetHostInterfaceQuit( TargetHostInterface* interface); private: typedef BObjectList InfoList; typedef BObjectList InterfaceList; private: BLocker fLock; static TargetHostInterfaceRoster* sDefaultInstance; int32 fRunningTeamDebuggers; InfoList fInterfaceInfos; InterfaceList fActiveInterfaces; Listener* fListener; }; class TargetHostInterfaceRoster::Listener { public: virtual ~Listener(); virtual void TeamDebuggerCountChanged(int32 newCount); }; #endif // TARGET_HOST_INTERFACE_ROSTER_H