/* * Copyright 2009-2011, Andrea Anzani. All rights reserved. * Copyright 2009-2011, Pier Luigi Fiorini. All rights reserved. * Distributed under the terms of the MIT License. */ #ifndef _PROTOCOL_MANAGER_H #define _PROTOCOL_MANAGER_H #include #include #include #include "CayaProtocol.h" #include "CayaProtocolAddOn.h" class BBitmap; class BDirectory; class BHandler; class ProtocolManager { public: void Init(BDirectory dir, BHandler* target); static ProtocolManager* Get(); uint32 CountProtocolAddOns() const; CayaProtocolAddOn* ProtocolAddOnAt(uint32 i) const; CayaProtocolAddOn* ProtocolAddOn(const char* signature); uint32 CountProtocolInstances() const; CayaProtocol* ProtocolInstanceAt(uint32 i) const; CayaProtocol* ProtocolInstance(bigtime_t identifier); void AddAccount(CayaProtocolAddOn* addOn, const char* account, BHandler* target); private: typedef KeyMap AddOnMap; typedef KeyMap ProtocolMap; ProtocolManager(); void _LoadAccounts(const char* image_path, CayaProtocolAddOn* addOn, int protoIndex, BHandler* target); void _LoadAccount(const char* imagePath, BEntry accountEntry, int protoIndex, BHandler* target); void _LoadAccount(CayaProtocolAddOn* addOn, BEntry accountEntry, BHandler* target); AddOnMap fAddOnMap; ProtocolMap fProtocolMap; }; #endif // _PROTOCOL_MANAGER_H