#include <Registration.h>
Stored in the RegistrationTable, indexed by regid.
Registration state is stored persistently in the database.
Definition at line 43 of file Registration.h.
Public Types | |
enum | failure_action_t { DROP, DEFER, EXEC } |
Type enumerating the option requested by the registration for how to handle bundles when not connected. More... | |
Public Member Functions | |
Registration (const oasys::Builder &) | |
Constructor for deserialization. | |
Registration (u_int32_t regid, const EndpointIDPattern &endpoint, u_int32_t failure_action, u_int32_t session_flags, u_int32_t expiration, const std::string &script="") | |
Constructor. | |
virtual | ~Registration () |
Destructor. | |
virtual void | deliver_bundle (Bundle *bundle)=0 |
Abstract hook for subclasses to deliver a bundle to this registration. | |
bool | deliver_if_not_duplicate (Bundle *bundle) |
Deliver the bundle if it isn't a duplicate. | |
virtual void | session_notify (Bundle *bundle) |
Hook for subclasses to handle a new session notification on this registration. | |
int | format (char *buf, size_t sz) const |
Virtual from Formatter. | |
void | serialize (oasys::SerializeAction *a) |
Virtual from SerializableObject. | |
void | force_expire () |
Force the registration to expire immediately. | |
const u_int32_t | durable_key () const |
Accessors. | |
const u_int32_t | regid () const |
Accessors. | |
const EndpointIDPattern & | endpoint () const |
Accessors. | |
failure_action_t | failure_action () const |
Accessors. | |
const u_int32_t | session_flags () const |
Accessors. | |
const std::string & | script () const |
Accessors. | |
const u_int32_t | expiration () const |
Accessors. | |
const bool | active () const |
Accessors. | |
const bool | expired () const |
Accessors. | |
void | set_active (bool a) |
Accessors. | |
void | set_expired (bool e) |
Accessors. | |
Static Public Member Functions | |
static const char * | failure_action_toa (failure_action_t action) |
Get a string representation of a failure action. | |
Static Public Attributes | |
static const u_int32_t | ADMIN_REGID = 0 |
Reserved registration identifiers. | |
static const u_int32_t | LINKSTATEROUTER_REGID = 1 |
static const u_int32_t | PING_REGID = 2 |
static const u_int32_t | EXTERNALROUTER_REGID = 3 |
static const u_int32_t | DTLSR_REGID = 4 |
static const u_int32_t | MAX_RESERVED_REGID = 9 |
Protected Member Functions | |
void | init_expiration_timer () |
void | cleanup_expiration_timer () |
Protected Attributes | |
u_int32_t | regid_ |
EndpointIDPattern | endpoint_ |
u_int32_t | failure_action_ |
u_int32_t | session_flags_ |
std::string | script_ |
u_int32_t | expiration_ |
u_int32_t | creation_time_ |
ExpirationTimer * | expiration_timer_ |
bool | active_ |
bool | bound_ |
bool | expired_ |
BundleInfoCache | delivery_cache_ |
Classes | |
class | ExpirationTimer |
Class to implement registration expirations. More... |
Type enumerating the option requested by the registration for how to handle bundles when not connected.
DROP | Drop bundles. |
DEFER | Spool bundles until requested. |
EXEC | Execute the specified callback procedure. |
Definition at line 62 of file Registration.h.
dtn::Registration::Registration | ( | const oasys::Builder & | ) |
dtn::Registration::Registration | ( | u_int32_t | regid, | |
const EndpointIDPattern & | endpoint, | |||
u_int32_t | failure_action, | |||
u_int32_t | session_flags, | |||
u_int32_t | expiration, | |||
const std::string & | script = "" | |||
) |
Constructor.
Definition at line 44 of file Registration.cc.
References creation_time_, dtnsim::gettimeofday(), and init_expiration_timer().
dtn::Registration::~Registration | ( | ) | [virtual] |
const char * dtn::Registration::failure_action_toa | ( | failure_action_t | action | ) | [static] |
virtual void dtn::Registration::deliver_bundle | ( | Bundle * | bundle | ) | [pure virtual] |
Abstract hook for subclasses to deliver a bundle to this registration.
Implemented in dtn::AdminRegistration, dtn::APIRegistration, dtn::LoggingRegistration, dtn::PingRegistration, dtn::TclRegistration, dtn::DTLSRRouter::Reg, and dtnsim::SimRegistration.
Referenced by deliver_if_not_duplicate().
Deliver the bundle if it isn't a duplicate.
Definition at line 94 of file Registration.cc.
References dtn::BundleInfoCache::add_entry(), deliver_bundle(), delivery_cache_, and dtn::EndpointID::NULL_EID().
Referenced by dtn::BundleDaemon::deliver_to_registration().
void dtn::Registration::session_notify | ( | Bundle * | bundle | ) | [virtual] |
Hook for subclasses to handle a new session notification on this registration.
Must be implemented by any custody registration subclasses since the default implementation just panics.
Reimplemented in dtn::APIRegistration.
Definition at line 108 of file Registration.cc.
const u_int32_t dtn::Registration::durable_key | ( | ) | const [inline] |
const u_int32_t dtn::Registration::regid | ( | ) | const [inline] |
Accessors.
Definition at line 114 of file Registration.h.
References regid_.
Referenced by dtn::RegistrationTable::add(), dtn::ForwardingLog::add_entry(), dtn::APIClient::close_client(), dtn::BundleDaemon::deliver_to_registration(), dtn::RegistrationCommand::exec(), dtn::RegistrationTable::find(), dtn::TableBasedRouter::find_session_upstream(), dtn::Subscriber::format(), format(), dtn::ForwardingLog::get_latest_entry(), dtn::RegistrationTable::get_matching(), dtn::APIClient::handle_bind(), dtn::APIClient::handle_find_registration(), dtn::APIClient::handle_recv(), dtn::TableBasedRouter::handle_registration_added(), dtn::BundleDaemon::handle_registration_added(), dtn::BundleDaemon::handle_registration_delete(), dtn::BundleDaemon::handle_registration_expired(), dtn::BundleDaemon::handle_registration_removed(), dtn::APIClient::handle_session_update(), dtn::APIClient::handle_unbind(), dtn::APIClient::handle_unregister(), dtn::RegistrationTable::update(), and dtn::APIClient::wait_for_notify().
const EndpointIDPattern& dtn::Registration::endpoint | ( | ) | const [inline] |
Accessors.
Definition at line 115 of file Registration.h.
References endpoint_.
Referenced by dtn::RegistrationTable::add(), dtn::ForwardingLog::add_entry(), dtn::BundleDaemon::deliver_to_registration(), dtn::TableBasedRouter::find_session_upstream(), format(), dtn::RegistrationTable::get(), dtn::ForwardingLog::get_latest_entry(), dtn::RegistrationTable::get_matching(), dtn::TableBasedRouter::handle_registration_added(), dtn::DTLSRRouter::handle_registration_added(), dtn::BundleDaemon::handle_registration_added(), dtn::BundleDaemon::handle_registration_removed(), dtn::APIClient::handle_send(), and dtn::RegistrationTable::update().
failure_action_t dtn::Registration::failure_action | ( | ) | const [inline] |
Accessors.
Definition at line 116 of file Registration.h.
References failure_action_.
Referenced by format().
const u_int32_t dtn::Registration::session_flags | ( | ) | const [inline] |
Accessors.
Definition at line 120 of file Registration.h.
References session_flags_.
Referenced by dtn::BundleDaemon::deliver_to_registration(), format(), dtn::TableBasedRouter::handle_registration_added(), dtn::DTLSRRouter::handle_registration_added(), and dtn::APIClient::handle_send().
const std::string& dtn::Registration::script | ( | ) | const [inline] |
Accessors.
Definition at line 121 of file Registration.h.
References script_.
Referenced by format().
const u_int32_t dtn::Registration::expiration | ( | ) | const [inline] |
Accessors.
Definition at line 122 of file Registration.h.
References expiration_.
Referenced by format().
const bool dtn::Registration::active | ( | ) | const [inline] |
Accessors.
Definition at line 123 of file Registration.h.
References active_.
Referenced by dtn::APIRegistration::deliver_bundle(), format(), dtn::APIClient::handle_bind(), dtn::BundleDaemon::handle_registration_expired(), dtn::APIClient::handle_unbind(), dtn::APIClient::handle_unregister(), and dtn::Registration::ExpirationTimer::timeout().
const bool dtn::Registration::expired | ( | ) | const [inline] |
Accessors.
Definition at line 124 of file Registration.h.
References expired_.
Referenced by dtn::APIClient::close_client(), dtn::APIClient::handle_unbind(), and dtn::APIClient::handle_unregister().
void dtn::Registration::set_active | ( | bool | a | ) | [inline] |
Accessors.
Definition at line 126 of file Registration.h.
References active_.
Referenced by dtn::AdminRegistration::AdminRegistration(), dtn::APIClient::close_client(), dtn::APIClient::handle_bind(), dtn::APIClient::handle_register(), dtn::APIClient::handle_unbind(), dtn::LoggingRegistration::LoggingRegistration(), dtn::PingRegistration::PingRegistration(), and dtn::TclRegistration::TclRegistration().
void dtn::Registration::set_expired | ( | bool | e | ) | [inline] |
Accessors.
Definition at line 127 of file Registration.h.
References expired_.
Referenced by force_expire(), dtn::BundleDaemon::handle_registration_expired(), init_expiration_timer(), and dtn::Registration::ExpirationTimer::timeout().
int dtn::Registration::format | ( | char * | buf, | |
size_t | sz | |||
) | const |
Virtual from Formatter.
Definition at line 166 of file Registration.cc.
References active(), dtn::Session::CUSTODY, endpoint(), EXEC, expiration(), failure_action(), failure_action_toa(), dtn::Session::PUBLISH, regid(), script(), session_flags(), and dtn::Session::SUBSCRIBE.
void dtn::Registration::serialize | ( | oasys::SerializeAction * | a | ) |
Virtual from SerializableObject.
Reimplemented in dtn::APIRegistration.
Definition at line 146 of file Registration.cc.
References creation_time_, endpoint_, expiration_, failure_action_, init_expiration_timer(), regid_, script_, and session_flags_.
Referenced by dtn::RegistrationCommand::exec(), and dtn::APIRegistration::serialize().
void dtn::Registration::force_expire | ( | ) |
Force the registration to expire immediately.
This hook is used to allow applications to call unregister on a bound registration, which causes the registration to be cleaned up once the app quits.
Definition at line 116 of file Registration.cc.
References active_, ASSERT, cleanup_expiration_timer(), and set_expired().
Referenced by dtn::APIClient::handle_unregister().
void dtn::Registration::init_expiration_timer | ( | ) | [protected] |
Definition at line 186 of file Registration.cc.
References creation_time_, expiration_, expiration_timer_, dtnsim::gettimeofday(), regid_, set_expired(), and TIMEVAL_DIFF_MSEC.
Referenced by Registration(), and serialize().
void dtn::Registration::cleanup_expiration_timer | ( | ) | [protected] |
Definition at line 126 of file Registration.cc.
References ASSERT, expiration_timer_, and expired_.
Referenced by force_expire(), and ~Registration().
const u_int32_t dtn::Registration::ADMIN_REGID = 0 [static] |
const u_int32_t dtn::Registration::LINKSTATEROUTER_REGID = 1 [static] |
Definition at line 52 of file Registration.h.
const u_int32_t dtn::Registration::PING_REGID = 2 [static] |
Definition at line 53 of file Registration.h.
const u_int32_t dtn::Registration::EXTERNALROUTER_REGID = 3 [static] |
Definition at line 54 of file Registration.h.
const u_int32_t dtn::Registration::DTLSR_REGID = 4 [static] |
Definition at line 55 of file Registration.h.
const u_int32_t dtn::Registration::MAX_RESERVED_REGID = 9 [static] |
Definition at line 56 of file Registration.h.
Referenced by dtn::RegistrationTable::add(), and dtn::GlobalStore::do_init().
u_int32_t dtn::Registration::regid_ [protected] |
Definition at line 165 of file Registration.h.
Referenced by dtn::APIRegistration::deliver_bundle(), durable_key(), init_expiration_timer(), dtn::LoggingRegistration::LoggingRegistration(), regid(), serialize(), dtnsim::SimRegistration::SimRegistration(), and dtn::TclRegistration::TclRegistration().
EndpointIDPattern dtn::Registration::endpoint_ [protected] |
Definition at line 166 of file Registration.h.
Referenced by dtn::PingRegistration::deliver_bundle(), dtn::APIRegistration::deliver_bundle(), endpoint(), and serialize().
u_int32_t dtn::Registration::failure_action_ [protected] |
Definition at line 167 of file Registration.h.
Referenced by dtn::APIRegistration::deliver_bundle(), failure_action(), and serialize().
u_int32_t dtn::Registration::session_flags_ [protected] |
Definition at line 168 of file Registration.h.
Referenced by serialize(), dtn::APIRegistration::serialize(), and session_flags().
std::string dtn::Registration::script_ [protected] |
Definition at line 169 of file Registration.h.
Referenced by dtn::APIRegistration::deliver_bundle(), script(), and serialize().
u_int32_t dtn::Registration::expiration_ [protected] |
Definition at line 170 of file Registration.h.
Referenced by expiration(), init_expiration_timer(), and serialize().
u_int32_t dtn::Registration::creation_time_ [protected] |
Definition at line 171 of file Registration.h.
Referenced by init_expiration_timer(), Registration(), and serialize().
ExpirationTimer* dtn::Registration::expiration_timer_ [protected] |
Definition at line 172 of file Registration.h.
Referenced by cleanup_expiration_timer(), and init_expiration_timer().
bool dtn::Registration::active_ [protected] |
Definition at line 173 of file Registration.h.
Referenced by active(), force_expire(), and set_active().
bool dtn::Registration::bound_ [protected] |
Definition at line 174 of file Registration.h.
bool dtn::Registration::expired_ [protected] |
Definition at line 175 of file Registration.h.
Referenced by cleanup_expiration_timer(), expired(), and set_expired().
BundleInfoCache dtn::Registration::delivery_cache_ [protected] |