X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/ff84dc4ee5f57e24a0777930d5482ee4ff53da0e..f0443899863b438efb88a57db829ce3ffc87da76:/lib/dvb/db.h diff --git a/lib/dvb/db.h b/lib/dvb/db.h index 265c5970..8bb0e5ae 100644 --- a/lib/dvb/db.h +++ b/lib/dvb/db.h @@ -12,6 +12,8 @@ class eDVBDB: public iDVBChannelList DECLARE_REF(eDVBDB); friend class eDVBDBQuery; friend class eDVBDBBouquetQuery; + friend class eDVBDBSatellitesQuery; + friend class eDVBDBProvidersQuery; private: struct channel { @@ -28,9 +30,7 @@ public: void save(); void loadBouquet(const char *path); - void saveBouquet(const char *path); void loadBouquets(); - void saveBouquets(); eDVBDB(); virtual ~eDVBDB(); @@ -42,10 +42,11 @@ public: RESULT addService(const eServiceReferenceDVB &service, eDVBService *service); RESULT getService(const eServiceReferenceDVB &reference, ePtr &service); + RESULT flush(); RESULT startQuery(ePtr &query, eDVBChannelQuery *query, const eServiceReference &source); - RESULT getBouquet(const eServiceReference &ref, const eBouquet* &bouquet); + RESULT getBouquet(const eServiceReference &ref, eBouquet* &bouquet); }; // we have to add a possibility to invalidate here. @@ -53,13 +54,12 @@ class eDVBDBQueryBase: public iDVBChannelListQuery { DECLARE_REF(eDVBDBQueryBase); protected: - std::map >::iterator m_cursor; ePtr m_db; ePtr m_query; eServiceReference m_source; public: eDVBDBQueryBase(eDVBDB *db, const eServiceReference &source, eDVBChannelQuery *query); - int compareLessEqual(const eServiceReferenceDVB &a, const eServiceReferenceDVB &b); + virtual int compareLessEqual(const eServiceReferenceDVB &a, const eServiceReferenceDVB &b); }; class eDVBDBQuery: public eDVBDBQueryBase @@ -78,4 +78,27 @@ public: RESULT getNextResult(eServiceReferenceDVB &ref); }; +class eDVBDBListQuery: public eDVBDBQueryBase +{ +protected: + std::list m_list; + std::list::iterator m_cursor; +public: + eDVBDBListQuery(eDVBDB *db, const eServiceReference &source, eDVBChannelQuery *query); + RESULT getNextResult(eServiceReferenceDVB &ref); + int compareLessEqual(const eServiceReferenceDVB &a, const eServiceReferenceDVB &b); +}; + +class eDVBDBSatellitesQuery: public eDVBDBListQuery +{ +public: + eDVBDBSatellitesQuery(eDVBDB *db, const eServiceReference &source, eDVBChannelQuery *query); +}; + +class eDVBDBProvidersQuery: public eDVBDBListQuery +{ +public: + eDVBDBProvidersQuery(eDVBDB *db, const eServiceReference &source, eDVBChannelQuery *query); +}; + #endif