#ifndef __db_h #define __db_h #include #include class ServiceDescriptionTable; struct eDVBBouquet { std::vector m_services; int lookupService(eServiceReferenceDVB &ref); }; class eDVBDB: public iDVBChannelList { DECLARE_REF(eDVBDB); friend class eDVBDBQuery; private: struct channel { ePtr m_frontendParameters; }; std::map m_channels; std::map > m_services; std::map m_bouquets; public: eDVBDB(); virtual ~eDVBDB(); RESULT addChannelToList(const eDVBChannelID &id, iDVBFrontendParameters *feparm); RESULT removeChannel(const eDVBChannelID &id); RESULT getChannelFrontendData(const eDVBChannelID &id, ePtr &parm); RESULT addService(const eServiceReferenceDVB &service, eDVBService *service); RESULT getService(const eServiceReferenceDVB &reference, ePtr &service); RESULT startQuery(ePtr &query, eDVBChannelQuery *query); }; // we have to add a possibility to invalidate here. class eDVBDBQuery: public iDVBChannelListQuery { DECLARE_REF(eDVBDBQuery); private: std::map >::iterator m_cursor; ePtr m_db; ePtr m_query; eServiceReference m_source; public: eDVBDBQuery(eDVBDB *db, const eServiceReference &source, eDVBChannelQuery *query); virtual RESULT getNextResult(eServiceReferenceDVB &ref); }; #endif