22 #ifndef NATIVESESSION_H_
23 #define NATIVESESSION_H_
32 #include <ibrcommon/thread/Thread.h>
33 #include <ibrcommon/thread/Queue.h>
34 #include <ibrcommon/thread/RWMutex.h>
35 #include <ibrcommon/thread/Mutex.h>
36 #include <ibrcommon/Exceptions.h>
86 static const std::string TAG;
120 const dtn::data::EID&
getNodeEID() const throw ();
137 void addEndpoint(const std::
string &suffix) throw (NativeSessionException);
142 void removeEndpoint(const std::
string &suffix) throw (NativeSessionException);
148 void addRegistration(const dtn::data::EID &eid) throw (NativeSessionException);
174 void load(
RegisterIndex ri, const dtn::data::BundleID &
id) throw (BundleNotFoundException);
199 void delivered(const dtn::data::BundleID &
id) const throw (BundleNotFoundException);
225 void write(
RegisterIndex ri, const
char *buf, const
size_t len, const
size_t offset = std::
string::npos) throw ();
236 void read(
RegisterIndex ri,
char *buf,
size_t &len, const
size_t offset = 0) throw ();
242 void receive() throw (NativeSessionException);
253 class BundleReceiver : public dtn::core::EventReceiver<dtn::routing::QueueBundleEvent>
257 virtual ~BundleReceiver();
286 ibrcommon::RWMutex _cb_mutex;
287 NativeSessionCallback *_session_cb;
288 NativeSerializerCallback *_serializer_cb;
297 ibrcommon::Queue<dtn::data::BundleID> _bundle_queue;
void read(RegisterIndex ri, char *buf, size_t &len, const size_t offset=0)
void setEndpoint(const std::string &suffix)
BundleNotFoundException(string what="Bundle not found.")
void removeEndpoint(const std::string &suffix)
std::vector< std::string > getSubscriptions()
void write(RegisterIndex ri, const char *buf, const size_t len, const size_t offset=std::string::npos)
const dtn::data::EID & getNodeEID() const
virtual void notifyCustodySignal(const dtn::data::EID &source, const dtn::data::CustodySignalBlock &custody)=0
NativeSession(NativeSessionCallback *session_cb, NativeSerializerCallback *serializer_cb)
void load(RegisterIndex ri, const dtn::data::BundleID &id)
void removeRegistration(const dtn::data::EID &eid)
NativeSessionException(string what="An error happened.")
void put(RegisterIndex ri, const dtn::data::Bundle &b)
virtual ~NativeSessionCallback()=0
void next(RegisterIndex ri)
void free(RegisterIndex ri)
void clear(RegisterIndex ri)
void delivered(const dtn::data::BundleID &id) const
void addEndpoint(const std::string &suffix)
const std::string & getHandle() const
void getInfo(RegisterIndex ri)
virtual void notifyBundle(const dtn::data::BundleID &id)=0
void get(RegisterIndex ri)
void addRegistration(const dtn::data::EID &eid)
dtn::data::BundleID send(RegisterIndex ri)
virtual void notifyStatusReport(const dtn::data::EID &source, const dtn::data::StatusReportBlock &report)=0