void SQLiteBundleSet::add(const dtn::data::MetaBundle &bundle) throw () { try { // insert bundle id into database SQLiteDatabase::Statement st(_sqldb._database, SQLiteDatabase::_sql_queries[SQLiteDatabase::BUNDLE_SET_ADD]); sqlite3_bind_int64(*st, 1, _set_id); sqlite3_bind_text(*st, 2, bundle.source.getString().c_str(), static_cast<int>(bundle.source.getString().length()), SQLITE_TRANSIENT); sqlite3_bind_int64(*st, 3, bundle.timestamp.get<uint64_t>()); sqlite3_bind_int64(*st, 4, bundle.sequencenumber.get<uint64_t>()); if (bundle.isFragment()) { sqlite3_bind_int64(*st, 5, bundle.fragmentoffset.get<uint64_t>()); sqlite3_bind_int64(*st, 6, bundle.getPayloadLength()); } else { sqlite3_bind_int64(*st, 5, -1); sqlite3_bind_int64(*st, 6, -1); } sqlite3_bind_int64(*st, 7, bundle.expiretime.get<uint64_t>()); st.step(); // update expiretime, if necessary new_expire_time(bundle.expiretime); // add bundle to the bloomfilter bundle.addTo(_bf); } catch (const SQLiteDatabase::SQLiteQueryException&) { // error } }
void MemoryBundleSet::add(const dtn::data::MetaBundle &bundle) throw () { // insert bundle id to the private list pair<bundle_set::iterator,bool> ret = _bundles.insert(bundle); BundleSetImpl::ExpiringBundle exb(*ret.first); _expire.insert(exb); // add bundle to the bloomfilter bundle.addTo(_bf); }