X-Git-Url: http://code.vuplus.com/gitweb/?p=vuplus_dvbapp;a=blobdiff_plain;f=lib%2Fdvb%2Fdb.h;h=7e31a22dceabac2465f235ef4664d2fe59f06e4a;hp=763df7eb6bd2a135995d25017d52ae2848334897;hb=3af66122574386a2856e83ba9c5d73d27a6f3710;hpb=d63d2c3c6cbbd574dda4f8b00ebe6c661735edd5 diff --git a/lib/dvb/db.h b/lib/dvb/db.h index 763df7e..7e31a22 100644 --- a/lib/dvb/db.h +++ b/lib/dvb/db.h @@ -4,25 +4,18 @@ #include #include -class eDVBService: public iObject +class ServiceDescriptionTable; + +struct eDVBBouquet { - DECLARE_REF; -public: - eDVBService(); - eString m_service_name; - eString m_provider_name; - - int m_flags; - std::set m_ca; - std::map m_cache; - virtual ~eDVBService(); + std::vector m_services; + int lookupService(eServiceReferenceDVB &ref); }; -class ServiceDescriptionTable; - -class eDVBDB: public virtual iDVBChannelList +class eDVBDB: public iDVBChannelList { -DECLARE_REF; +DECLARE_REF(eDVBDB); + friend class eDVBDBQuery; private: struct channel { @@ -32,6 +25,8 @@ private: std::map m_channels; std::map > m_services; + + std::map m_bouquets; public: eDVBDB(); virtual ~eDVBDB(); @@ -43,6 +38,22 @@ public: 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; + eServiceReferenceDVB m_source; +public: + eDVBDBQuery(eDVBDB *db, const eServiceReferenceDVB &source, eDVBChannelQuery *query); + virtual RESULT getNextResult(eServiceReferenceDVB &ref); }; #endif