#include <Registration.h>
Classes | |
class | ExpirationTimer |
Class to implement registration expirations. More... | |
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_ |
Stored in the RegistrationTable, indexed by regid.
Registration state is stored persistently in the database.
Definition at line 43 of file Registration.h.
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 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::Registration::ExpirationTimer::timeout().
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().
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::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().
const u_int32_t dtn::Registration::durable_key | ( | ) | const [inline] |
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().
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::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().
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 char * dtn::Registration::failure_action_toa | ( | failure_action_t | action | ) | [static] |
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().
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::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().
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 std::string& dtn::Registration::script | ( | ) | const [inline] |
Accessors.
Definition at line 121 of file Registration.h.
References script_.
Referenced by format().
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().
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().
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.
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::Registration::ExpirationTimer::timeout().
bool dtn::Registration::active_ [protected] |
Definition at line 173 of file Registration.h.
Referenced by active(), force_expire(), and set_active().
const u_int32_t dtn::Registration::ADMIN_REGID = 0 [static] |
bool dtn::Registration::bound_ [protected] |
Definition at line 174 of file Registration.h.
u_int32_t dtn::Registration::creation_time_ [protected] |
Definition at line 171 of file Registration.h.
Referenced by init_expiration_timer(), Registration(), and serialize().
BundleInfoCache dtn::Registration::delivery_cache_ [protected] |
const u_int32_t dtn::Registration::DTLSR_REGID = 4 [static] |
Definition at line 55 of file Registration.h.
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::expiration_ [protected] |
Definition at line 170 of file Registration.h.
Referenced by expiration(), init_expiration_timer(), 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::expired_ [protected] |
Definition at line 175 of file Registration.h.
Referenced by cleanup_expiration_timer(), expired(), and set_expired().
const u_int32_t dtn::Registration::EXTERNALROUTER_REGID = 3 [static] |
Definition at line 54 of file Registration.h.
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().
const u_int32_t dtn::Registration::LINKSTATEROUTER_REGID = 1 [static] |
Definition at line 52 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().
const u_int32_t dtn::Registration::PING_REGID = 2 [static] |
Definition at line 53 of file Registration.h.
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().
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::session_flags_ [protected] |
Definition at line 168 of file Registration.h.
Referenced by serialize(), dtn::APIRegistration::serialize(), and session_flags().