00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 #ifndef __METADATAPLUGIN_H
00014 #define __METADATAPLUGIN_H
00015 
00016 #include <pthread.h>
00017 #include <map>
00018 
00019 #include <Common.h>
00020 #include <Document.h>
00021 #include <Error.h>
00022 #include <Plugin.h>
00023 
00024 
00025 enum DocumentLock
00026 {
00027     LOCK_UNLOCK = 0,            
00028     LOCK_DOCUMENT,              
00029     LOCK_REVISION,              
00030     LOCK_RENDITION              
00031 };
00032 
00033 
00034 using namespace std;
00035 
00043 class MetadataPlugin : public Plugin
00044 {
00045 public:
00046     MetadataPlugin( const Config &cfg );
00047     virtual ~MetadataPlugin() = 0;
00048 
00055     virtual CoreError create( NumID &docid, const Document &document ) = 0;
00056 
00062     virtual CoreError remove( NumID docid ) = 0;
00063 
00070     virtual CoreError update( NumID docid, const Document &document ) = 0;
00071 
00078     virtual CoreError get( NumID docid, Document &document ) = 0;
00079 
00086     virtual CoreError lock( NumID docid, DocumentLock lock ) = 0;
00087 
00093     CoreError unlock( NumID docid );
00094 
00100     virtual CoreError getLocks( map<NumID,DocumentLock> &locks ) = 0;
00101 
00109     virtual CoreError query( NumID first, int maxlen, map<NumID,NumID> &updates ) = 0;
00110 };
00111 
00112 #endif