00001
00002
00003
00004
00005
00006
00007
00008 #ifndef _METADATA_H
00009 #define _METADATA_H
00010
00011 #include <vdr/tools.h>
00012 #include <vdr/channels.h>
00013 #include <vdr/recording.h>
00014 #include "../common.h"
00015 #include "database.h"
00016 #include "object.h"
00017 #include "resources.h"
00018
00024 struct cUPnPResultSet {
00025 int mNumberReturned;
00026 int mTotalMatches;
00027 const char* mResult;
00028 };
00029
00038 class cMediaDatabase : public cThread {
00039 friend class cUPnPServer;
00040 friend class cUPnPObjectMediator;
00041 private:
00042 unsigned int mSystemUpdateID;
00043 cUPnPObjectFactory* mFactory;
00044 cHash<cUPnPClassObject>* mObjects;
00045 cSQLiteDatabase* mDatabase;
00046 cUPnPObjectID mLastInsertObjectID;
00047 cUPnPObjectID getNextObjectID();
00048 void cacheObject(cUPnPClassObject* Object);
00049 int prepareDatabase();
00050 int loadChannels();
00051 int loadRecordings();
00052 void updateChannelEPG();
00053 void updateRecordings();
00054 bool init();
00055 void updateSystemID();
00056 virtual void Action();
00057 public:
00067 unsigned int getSystemUpdateID();
00077 const char* getContainerUpdateIDs();
00083 cMediaDatabase();
00084 virtual ~cMediaDatabase();
00096 int addFastFind(
00097 cUPnPClassObject* Object,
00098 const char* FastFind
00099
00100 );
00113 cUPnPClassObject* getObjectByFastFind(
00114 const char* FastFind
00115
00116 );
00127 cUPnPClassObject* getObjectByID(
00128 cUPnPObjectID ID
00129 );
00145 int browse(
00146 OUT cUPnPResultSet** Results,
00147 IN const char* ID,
00148 IN bool BrowseMetadata,
00149 IN const char* Filter = "*",
00150 IN unsigned int Offset = 0,
00151 IN unsigned int Count = 0,
00152 IN const char* SortCriteria = ""
00153 );
00173 int search(
00174 OUT cUPnPResultSet** Results,
00175 IN const char* ID,
00176 IN const char* Search,
00177 IN const char* Filter = "*",
00178 IN unsigned int Offset = 0,
00179 IN unsigned int Count = 0,
00180 IN const char* SortCriteria = ""
00181 );
00182 };
00183
00184 #endif
00185