dtn::Registration Class Reference

#include <Registration.h>

Inheritance diagram for dtn::Registration:

dtn::AdminRegistration dtn::APIRegistration dtn::DTLSRRouter::Reg dtn::LoggingRegistration dtn::PingRegistration dtn::TclRegistration dtnsim::SimRegistration

List of all members.


Detailed Description

Class used to represent an "application" registration, loosely defined to also include internal router mechanisms that consume bundles.

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 EndpointIDPatternendpoint () 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_
ExpirationTimerexpiration_timer_
bool active_
bool bound_
bool expired_
BundleInfoCache delivery_cache_

Classes

class  ExpirationTimer
 Class to implement registration expirations. More...

Member Enumeration Documentation

Type enumerating the option requested by the registration for how to handle bundles when not connected.

Enumerator:
DROP  Drop bundles.
DEFER  Spool bundles until requested.
EXEC  Execute the specified callback procedure.

Definition at line 62 of file Registration.h.


Constructor & Destructor Documentation

dtn::Registration::Registration ( const oasys::Builder &   ) 

Constructor for deserialization.

Definition at line 71 of file Registration.cc.

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]

Destructor.

Definition at line 87 of file Registration.cc.

References cleanup_expiration_timer().


Member Function Documentation

const char * dtn::Registration::failure_action_toa ( failure_action_t  action  )  [static]

Get a string representation of a failure action.

Definition at line 32 of file Registration.cc.

References DEFER, DROP, and EXEC.

Referenced by format().

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().

bool dtn::Registration::deliver_if_not_duplicate ( Bundle bundle  ) 

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]

Accessors.

Definition at line 113 of file Registration.h.

References regid_.

const u_int32_t dtn::Registration::regid (  )  const [inline]

const EndpointIDPattern& dtn::Registration::endpoint (  )  const [inline]

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]

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]

const bool dtn::Registration::expired (  )  const [inline]

void dtn::Registration::set_active ( bool  a  )  [inline]

void dtn::Registration::set_expired ( bool  e  )  [inline]

int dtn::Registration::format ( char *  buf,
size_t  sz 
) const

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]

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().


Member Data Documentation

const u_int32_t dtn::Registration::ADMIN_REGID = 0 [static]

Reserved registration identifiers.

Definition at line 51 of file Registration.h.

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]

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().

Definition at line 172 of file Registration.h.

Referenced by cleanup_expiration_timer(), and init_expiration_timer().

Definition at line 173 of file Registration.h.

Referenced by active(), force_expire(), and set_active().

Definition at line 174 of file Registration.h.

Definition at line 175 of file Registration.h.

Referenced by cleanup_expiration_timer(), expired(), and set_expired().

Definition at line 176 of file Registration.h.

Referenced by deliver_if_not_duplicate().


The documentation for this class was generated from the following files:

Generated on Mon Jul 21 14:12:21 2008 for DTN Reference Implementation by  doxygen 1.5.6