| #ifndef OBJECT_DB_H |
| #define OBJECT_DB_H |
| |
| #include <boost/exception/all.hpp> |
| #include <vector> |
| |
| using namespace std; |
| |
| struct ObjectDBException : virtual boost::exception, virtual exception { }; |
| typedef boost::error_info<struct tag_errmsg, std::string> error_info_str; |
| |
| inline void throwException(const string &msg) { boost::throw_exception(ObjectDBException() << error_info_str(msg)); } |
| |
| typedef unsigned char Byte; |
| typedef vector<Byte> Bytes; |
| |
| // OK. This name is a bit miss-leading, but this ObjectDB is really some storage |
| // that stores the Ccnx ContentObjects of a file. So unlike a normal database, |
| // this DB is per file. |
| |
| // The assumption is, the ContentObjects will be write to ObjectDB sequentially |
| // This guarantees that when read, the Nth ContentObject read has the sequence number N as the last component of its name |
| class ObjectDB |
| { |
| public: |
| virtual ~ObjectDB(){} |
| |
| // assume sequential |
| virtual void |
| append(const Bytes &co) = 0; |
| |
| // get next CO |
| virtual Bytes |
| next() = 0; |
| |
| // size in terms of number of COs |
| virtual int |
| size() = 0; |
| |
| }; |
| |
| #endif |