X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/76e87479554f771723ea4005788f9318cd1654f4..32e4324b9b5e615a84885b9132505e4706ededfe:/lib/service/iservice.h diff --git a/lib/service/iservice.h b/lib/service/iservice.h index 62be26c0..d0dc1e2b 100644 --- a/lib/service/iservice.h +++ b/lib/service/iservice.h @@ -130,11 +130,18 @@ public: return path < c.path; } operator bool() const + { + return valid(); + } + + int valid() const { return type != idInvalid; } }; +SWIG_ALLOW_OUTPUT_SIMPLE(eServiceReference); + typedef unsigned long long pts_t; /* the reason we have the servicereference as additional argument is @@ -171,6 +178,8 @@ TEMPLATE_TYPEDEF(ePtr, iStaticServiceInformationPtr); class eServiceEvent; +TEMPLATE_TYPEDEF(ePtr, eServiceEventPtr); + class iServiceInformation: public iObject { public: @@ -241,10 +250,41 @@ public: /* new, shiny interface: streaming. */ virtual SWIG_VOID(RESULT) getNext(eServiceReference &SWIG_OUTPUT)=0; + + /* use this for sorting. output is not sorted because of either + - performance reasons: the whole list must be buffered or + - the interface would be restricted to a list. streaming + (as well as a future "active" extension) won't be possible. + */ + virtual int compareLessEqual(const eServiceReference &, const eServiceReference &)=0; }; TEMPLATE_TYPEDEF(ePtr, iListableServicePtr); + /* a helper class which can be used as argument to stl's sort(). */ +class iListableServiceCompare +{ + ePtr m_list; +public: + iListableServiceCompare(iListableService *list): m_list(list) { } + bool operator()(const eServiceReference &a, const eServiceReference &b) + { + return m_list->compareLessEqual(a, b); + } +}; + +class iServiceOfflineOperations: public iObject +{ +public: + /* to delete a service, forever. */ + virtual RESULT deleteFromDisk(int simulate=1)=0; + + /* for transferring a service... */ + virtual SWIG_VOID(RESULT) getListOfFilenames(std::list &SWIG_OUTPUT)=0; + + // TODO: additional stuff, like a conversion interface? +}; + class iServiceHandler: public iObject { public: @@ -252,6 +292,7 @@ public: virtual SWIG_VOID(RESULT) record(const eServiceReference &, ePtr &SWIG_OUTPUT)=0; virtual SWIG_VOID(RESULT) list(const eServiceReference &, ePtr &SWIG_OUTPUT)=0; virtual SWIG_VOID(RESULT) info(const eServiceReference &, ePtr &SWIG_OUTPUT)=0; + virtual SWIG_VOID(RESULT) offlineOperations(const eServiceReference &, ePtr &SWIG_OUTPUT)=0; }; TEMPLATE_TYPEDEF(ePtr, iServiceHandlerPtr);