24 #ifndef SQLITEBUNDLESTORAGE_H_
25 #define SQLITEBUNDLESTORAGE_H_
37 #include <ibrcommon/thread/Thread.h>
38 #include <ibrcommon/thread/RWMutex.h>
39 #include <ibrcommon/thread/Conditional.h>
40 #include <ibrcommon/data/File.h>
41 #include <ibrcommon/thread/Queue.h>
53 static const std::string TAG;
60 ibrcommon::BLOB::Reference
create();
189 class BlockingTask :
public Task
192 BlockingTask() : _done(
false), _abort(
false) {};
193 virtual ~BlockingTask() {};
201 ibrcommon::MutexLock l(_cond);
202 while (!_done && !_abort) _cond.wait();
204 if (_abort)
throw ibrcommon::Exception(
"Task aborted");
209 ibrcommon::MutexLock l(_cond);
216 ibrcommon::MutexLock l(_cond);
222 ibrcommon::Conditional _cond;
227 class TaskIdle :
public Task
232 virtual ~TaskIdle() {};
235 static ibrcommon::Mutex _mutex;
239 class TaskExpire :
public Task
243 : _timestamp(timestamp) { };
245 virtual ~TaskExpire() {};
256 class SQLiteBLOB :
public ibrcommon::BLOB
260 virtual ~SQLiteBLOB();
262 virtual void clear();
265 virtual void close();
268 std::iostream &__get_stream()
273 std::streamsize __get_size();
276 SQLiteBLOB(
const ibrcommon::File &path);
277 std::fstream _filestream;
278 ibrcommon::TemporaryFile _file;
294 virtual const std::string getName()
const;
298 ibrcommon::File _blobPath;
299 ibrcommon::File _blockPath;
302 ibrcommon::Queue<Task*> _tasks;
304 ibrcommon::RWMutex _global_lock;
void releaseCustody(const dtn::data::EID &custodian, const dtn::data::BundleID &id)
std::set< dtn::data::EID > eid_set
dtn::data::Length size() const
void raiseEvent(const dtn::core::TimeEvent &evt)
SQLiteBundleStorage(const ibrcommon::File &path, const dtn::data::Length &maxsize, bool usePersistentBundleSets=false)
virtual void componentDown()
virtual ~SQLiteBundleStorage()
virtual void componentUp()
virtual const eid_set getDistinctDestinations()
void iterateDatabase(const dtn::data::MetaBundle &bundle, const dtn::data::Length size)
virtual void setFaulty(bool mode)
void eventBundleExpired(const dtn::data::BundleID &id, const dtn::data::Length size)
bool contains(const dtn::data::BundleID &id)
virtual dtn::data::MetaBundle info(const dtn::data::BundleID &id)
ibrcommon::BLOB::Reference create()
void store(const dtn::data::Bundle &bundle)
virtual void componentRun()