24 #ifndef SQLITEBUNDLESET_H_
25 #define SQLITEBUNDLESET_H_
31 #include <ibrcommon/data/BloomFilter.h>
32 #include <ibrcommon/thread/Mutex.h>
66 static ibrcommon::Mutex _create_lock;
81 virtual refcnt_ptr<BundleSetImpl>
copy()
const;
87 virtual void assign(
const refcnt_ptr<BundleSetImpl>&);
91 virtual void clear() throw ();
93 virtual
bool has(const dtn::data::BundleID &bundle) const throw ();
100 virtual dtn::data::
Size size() const throw();
109 std::set<dtn::data::MetaBundle>
getNotIn(const ibrcommon::BloomFilter &filter) const throw();
111 virtual std::ostream &
serialize(std::ostream &stream) const;
112 virtual std::istream &
deserialize(std::istream &stream);
115 void get_bundleid(
SQLiteDatabase::Statement &st, dtn::data::BundleID &
id,
int offset = 0) const throw (
SQLiteDatabase::SQLiteQueryException);
120 const
size_t _set_id;
123 dtn::data::
Length _bf_size;
126 ibrcommon::BloomFilter _bf;
129 dtn::data::BundleSet::Listener *_listener;
138 void new_expire_time(const dtn::data::
Timestamp &ttl) throw();
140 void rebuild_bloom_filter();
142 const
bool _persistent;
dtn::data::BundleSetImpl * create(dtn::data::BundleSet::Listener *listener, dtn::data::Size bf_size)
Factory(SQLiteDatabase &db)
virtual std::ostream & serialize(std::ostream &stream) const
virtual dtn::data::Size size() const
static bool __exists(SQLiteDatabase &db, const std::string &name, bool persistent)
virtual refcnt_ptr< BundleSetImpl > copy() const
virtual std::istream & deserialize(std::istream &stream)
dtn::data::Length getLength() const
virtual void expire(const dtn::data::Timestamp timestamp)
const ibrcommon::BloomFilter & getBloomFilter() const
SQLiteBundleSet(const size_t id, bool persistant, dtn::data::BundleSet::Listener *listener, dtn::data::Size bf_size, dtn::storage::SQLiteDatabase &database)
virtual void assign(const refcnt_ptr< BundleSetImpl > &)
std::set< dtn::data::MetaBundle > getNotIn(const ibrcommon::BloomFilter &filter) const
virtual void add(const dtn::data::MetaBundle &bundle)
virtual bool has(const dtn::data::BundleID &bundle) const
virtual ~SQLiteBundleSet()
static size_t __create(SQLiteDatabase &db, const std::string &name, bool persistent)
dtn::data::SDNV< Size > Timestamp