dtn::PrimaryBlockProcessor Class Reference

#include <PrimaryBlockProcessor.h>

Inheritance diagram for dtn::PrimaryBlockProcessor:

dtn::BlockProcessor

List of all members.


Detailed Description

Block processor implementation for the primary bundle block.

Definition at line 30 of file PrimaryBlockProcessor.h.

class BundleProtocol
static size_t get_primary_len (const Bundle *bundle, Dictionary *dict, PrimaryBlock *primary)
static u_int64_t format_bundle_flags (const Bundle *bundle)
static void parse_bundle_flags (Bundle *bundle, u_int64_t flags)
static u_int64_t format_cos_flags (const Bundle *bundle)
static void parse_cos_flags (Bundle *bundle, u_int64_t cos_flags)
static u_int64_t format_srr_flags (const Bundle *bundle)
static void parse_srr_flags (Bundle *bundle, u_int64_t srr_flags)

Public Member Functions

 PrimaryBlockProcessor ()
 Constructor.
int consume (Bundle *bundle, BlockInfo *block, u_char *buf, size_t len)
 Virtual from BlockProcessor.
bool validate (const Bundle *bundle, BlockInfoVec *block_list, BlockInfo *block, status_report_reason_t *reception_reason, status_report_reason_t *deletion_reason)
 Virtual from BlockProcessor.
int prepare (const Bundle *bundle, BlockInfoVec *xmit_blocks, const BlockInfo *source, const LinkRef &link, list_owner_t list)
 Virtual from BlockProcessor.
int generate (const Bundle *bundle, BlockInfoVec *xmit_blocks, BlockInfo *block, const LinkRef &link, bool last)
 Virtual from BlockProcessor.
void generate_primary (const Bundle *bundle, BlockInfoVec *xmit_blocks, BlockInfo *block)
 Virtual from BlockProcessor.

Protected Types

enum  bundle_processing_flag_t {
  BUNDLE_IS_FRAGMENT = 1 << 0, BUNDLE_IS_ADMIN = 1 << 1, BUNDLE_DO_NOT_FRAGMENT = 1 << 2, BUNDLE_CUSTODY_XFER_REQUESTED = 1 << 3,
  BUNDLE_SINGLETON_DESTINATION = 1 << 4, BUNDLE_ACK_BY_APP = 1 << 5, BUNDLE_UNUSED = 1 << 6
}
 Values for bundle processing flags that appear in the primary block. More...

Classes

struct  PrimaryBlock
 The remainder of the fixed-length part of the primary bundle block that immediately follows the block length. More...

Member Enumeration Documentation

Values for bundle processing flags that appear in the primary block.

Enumerator:
BUNDLE_IS_FRAGMENT 
BUNDLE_IS_ADMIN 
BUNDLE_DO_NOT_FRAGMENT 
BUNDLE_CUSTODY_XFER_REQUESTED 
BUNDLE_SINGLETON_DESTINATION 
BUNDLE_ACK_BY_APP 
BUNDLE_UNUSED 

Definition at line 69 of file PrimaryBlockProcessor.h.


Constructor & Destructor Documentation

dtn::PrimaryBlockProcessor::PrimaryBlockProcessor (  ) 

Constructor.

Definition at line 34 of file PrimaryBlockProcessor.cc.


Member Function Documentation

int dtn::PrimaryBlockProcessor::consume ( Bundle bundle,
BlockInfo block,
u_char *  buf,
size_t  len 
) [virtual]

Virtual from BlockProcessor.

Reimplemented from dtn::BlockProcessor.

Definition at line 301 of file PrimaryBlockProcessor.cc.

References ASSERT, dtn::PrimaryBlockProcessor::PrimaryBlock::block_length, dtn::BlockInfo::complete(), dtn::BlockProcessor::consume(), dtn::PrimaryBlockProcessor::PrimaryBlock::creation_sequence, dtn::PrimaryBlockProcessor::PrimaryBlock::creation_time, dtn::BundleProtocol::CURRENT_VERSION, dtn::PrimaryBlockProcessor::PrimaryBlock::custodian_scheme_offset, dtn::PrimaryBlockProcessor::PrimaryBlock::custodian_ssp_offset, dtn::BlockInfo::data_length(), dtn::PrimaryBlockProcessor::PrimaryBlock::dest_scheme_offset, dtn::PrimaryBlockProcessor::PrimaryBlock::dest_ssp_offset, dtn::BlockInfoVec::dict(), dtn::PrimaryBlockProcessor::PrimaryBlock::dictionary_length, dtn::Bundle::frag_offset(), dtn::BlockInfo::full_length(), dtn::Bundle::is_fragment(), dtn::PrimaryBlockProcessor::PrimaryBlock::lifetime, dtn::log, log_err_p, dtn::Bundle::mutable_custodian(), dtn::Bundle::mutable_dest(), dtn::Bundle::mutable_recv_blocks(), dtn::Bundle::mutable_replyto(), dtn::Bundle::mutable_source(), dtn::Bundle::orig_length(), parse_bundle_flags(), parse_cos_flags(), parse_srr_flags(), PBP_READ_SDNV, dtn::PrimaryBlockProcessor::PrimaryBlock::processing_flags, dtn::PrimaryBlockProcessor::PrimaryBlock::replyto_scheme_offset, dtn::PrimaryBlockProcessor::PrimaryBlock::replyto_ssp_offset, dtn::Bundle::set_creation_ts(), dtn::Bundle::set_expiration(), dtn::Bundle::set_frag_offset(), dtn::Bundle::set_orig_length(), dtn::PrimaryBlockProcessor::PrimaryBlock::source_scheme_offset, dtn::PrimaryBlockProcessor::PrimaryBlock::source_ssp_offset, dtn::PrimaryBlockProcessor::PrimaryBlock::version, and dtn::BlockInfo::writable_contents().

bool dtn::PrimaryBlockProcessor::validate ( const Bundle bundle,
BlockInfoVec block_list,
BlockInfo block,
status_report_reason_t reception_reason,
status_report_reason_t deletion_reason 
) [virtual]

int dtn::PrimaryBlockProcessor::prepare ( const Bundle bundle,
BlockInfoVec xmit_blocks,
const BlockInfo source,
const LinkRef link,
list_owner_t  list 
) [virtual]

int dtn::PrimaryBlockProcessor::generate ( const Bundle bundle,
BlockInfoVec xmit_blocks,
BlockInfo block,
const LinkRef link,
bool  last 
) [virtual]

Virtual from BlockProcessor.

Implements dtn::BlockProcessor.

Definition at line 574 of file PrimaryBlockProcessor.cc.

References ASSERT, and BP_SUCCESS.

void dtn::PrimaryBlockProcessor::generate_primary ( const Bundle bundle,
BlockInfoVec xmit_blocks,
BlockInfo block 
)

size_t dtn::PrimaryBlockProcessor::get_primary_len ( const Bundle bundle,
Dictionary dict,
PrimaryBlock primary 
) [static, protected]

Helper functions to parse/format the primary block

Definition at line 177 of file PrimaryBlockProcessor.cc.

References dtn::PrimaryBlockProcessor::PrimaryBlock::block_length, dtn::Bundle::bundleid(), dtn::PrimaryBlockProcessor::PrimaryBlock::creation_sequence, dtn::PrimaryBlockProcessor::PrimaryBlock::creation_time, dtn::Bundle::creation_ts(), dtn::BundleProtocol::CURRENT_VERSION, dtn::Bundle::custodian(), dtn::PrimaryBlockProcessor::PrimaryBlock::custodian_scheme_offset, dtn::PrimaryBlockProcessor::PrimaryBlock::custodian_ssp_offset, dtn::Bundle::dest(), dtn::PrimaryBlockProcessor::PrimaryBlock::dest_scheme_offset, dtn::PrimaryBlockProcessor::PrimaryBlock::dest_ssp_offset, dtn::PrimaryBlockProcessor::PrimaryBlock::dictionary_length, encoding_len(), dtn::Bundle::expiration(), format_bundle_flags(), format_cos_flags(), format_srr_flags(), dtn::Bundle::frag_offset(), dtn::Dictionary::get_offsets(), dtn::Bundle::is_fragment(), dtn::Dictionary::length(), dtn::PrimaryBlockProcessor::PrimaryBlock::lifetime, dtn::log, dtn::Bundle::orig_length(), dtn::PrimaryBlockProcessor::PrimaryBlock::processing_flags, dtn::Bundle::replyto(), dtn::PrimaryBlockProcessor::PrimaryBlock::replyto_scheme_offset, dtn::PrimaryBlockProcessor::PrimaryBlock::replyto_ssp_offset, dtn::BundleTimestamp::seconds_, dtn::BundleTimestamp::seqno_, dtn::Bundle::source(), dtn::PrimaryBlockProcessor::PrimaryBlock::source_scheme_offset, dtn::PrimaryBlockProcessor::PrimaryBlock::source_ssp_offset, and dtn::PrimaryBlockProcessor::PrimaryBlock::version.

Referenced by generate_primary().

u_int64_t dtn::PrimaryBlockProcessor::format_bundle_flags ( const Bundle bundle  )  [static, protected]

void dtn::PrimaryBlockProcessor::parse_bundle_flags ( Bundle bundle,
u_int64_t  flags 
) [static, protected]

u_int64_t dtn::PrimaryBlockProcessor::format_cos_flags ( const Bundle bundle  )  [static, protected]

Helper functions to parse/format the primary block

Definition at line 115 of file PrimaryBlockProcessor.cc.

References dtn::Bundle::priority().

Referenced by get_primary_len().

void dtn::PrimaryBlockProcessor::parse_cos_flags ( Bundle bundle,
u_int64_t  cos_flags 
) [static, protected]

Helper functions to parse/format the primary block

Definition at line 126 of file PrimaryBlockProcessor.cc.

References dtn::Bundle::set_priority().

Referenced by consume().

u_int64_t dtn::PrimaryBlockProcessor::format_srr_flags ( const Bundle bundle  )  [static, protected]

void dtn::PrimaryBlockProcessor::parse_srr_flags ( Bundle bundle,
u_int64_t  srr_flags 
) [static, protected]


Friends And Related Function Documentation

friend class BundleProtocol [friend]

Helper functions to parse/format the primary block

Reimplemented from dtn::BlockProcessor.

Definition at line 104 of file PrimaryBlockProcessor.h.


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

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