Block processor implementation for the metadata extension block. More...
#include <MetadataBlockProcessor.h>
Public Member Functions | |
MetadataBlockProcessor () | |
Constructor. | |
void | prepare_generated_metadata (Bundle *bundle, BlockInfoVec *blocks, const LinkRef &link) |
Determines the generated metadata (not received metadata, which is handled by the prepare() method) to be included in an outgoing bundle. | |
void | delete_generated_metadata (Bundle *bundle, const LinkRef &link) |
Deletes bundle state maintained for generated metadata. | |
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. | |
Private Member Functions | |
bool | parse_metadata (Bundle *bundle, BlockInfo *block) |
Parses a metadata extension block. | |
bool | handle_error (const BlockInfo *block, status_report_reason_t *reception_reason, status_report_reason_t *deletion_reason) |
Handles a metadata extension block processing error based on the block preamble flags. |
Block processor implementation for the metadata extension block.
Definition at line 34 of file MetadataBlockProcessor.h.
dtn::MetadataBlockProcessor::MetadataBlockProcessor | ( | ) |
Constructor.
Definition at line 34 of file MetadataBlockProcessor.cc.
int dtn::MetadataBlockProcessor::consume | ( | Bundle * | bundle, | |
BlockInfo * | block, | |||
u_char * | buf, | |||
size_t | len | |||
) | [virtual] |
Virtual from BlockProcessor.
Reimplemented from dtn::BlockProcessor.
Definition at line 41 of file MetadataBlockProcessor.cc.
References ASSERT, dtn::BlockInfo::complete(), and parse_metadata().
void dtn::MetadataBlockProcessor::delete_generated_metadata | ( | Bundle * | bundle, | |
const LinkRef & | link | |||
) |
Deletes bundle state maintained for generated metadata.
Definition at line 422 of file MetadataBlockProcessor.cc.
References ASSERT, dtn::LinkMetadataSet::delete_blocks(), dtn::Bundle::mutable_generated_metadata(), and dtn::Bundle::recv_metadata().
int dtn::MetadataBlockProcessor::generate | ( | const Bundle * | bundle, | |
BlockInfoVec * | xmit_blocks, | |||
BlockInfo * | block, | |||
const LinkRef & | link, | |||
bool | last | |||
) | [virtual] |
Virtual from BlockProcessor.
Implements dtn::BlockProcessor.
Definition at line 210 of file MetadataBlockProcessor.cc.
References ASSERT, dtn::BundleProtocol::BLOCK_FLAG_DISCARD_BLOCK_ONERROR, dtn::BundleProtocol::BLOCK_FLAG_DISCARD_BUNDLE_ONERROR, dtn::BundleProtocol::BLOCK_FLAG_LAST_BLOCK, dtn::BlockProcessor::block_type(), BP_SUCCESS, buf, dtn::BlockInfo::contents(), dtn::BlockInfo::data_length(), dtn::BlockInfo::data_offset(), encode(), encoding_len(), dtn::BlockInfo::flags(), dtn::BlockProcessor::generate_preamble(), len, dtn::BlockInfo::locals(), dtn::BlockInfo::owner(), dtn::BlockInfo::source(), and dtn::BlockInfo::writable_contents().
bool dtn::MetadataBlockProcessor::handle_error | ( | const BlockInfo * | block, | |
status_report_reason_t * | reception_reason, | |||
status_report_reason_t * | deletion_reason | |||
) | [private] |
Handles a metadata extension block processing error based on the block preamble flags.
Definition at line 404 of file MetadataBlockProcessor.cc.
References dtn::BundleProtocol::BLOCK_FLAG_DISCARD_BUNDLE_ONERROR, dtn::BundleProtocol::BLOCK_FLAG_REPORT_ONERROR, dtn::BlockInfo::flags(), and dtn::BundleProtocol::REASON_BLOCK_UNINTELLIGIBLE.
Referenced by validate().
Parses a metadata extension block.
Definition at line 337 of file MetadataBlockProcessor.cc.
References ASSERT, buf, dtn::BlockInfo::complete(), dtn::BlockInfo::data(), dtn::BlockInfo::data_length(), dtn::BlockInfo::data_offset(), decode(), len, dtn::log, log_err_p, dtn::BundleProtocol::METADATA_BLOCK, dtn::Bundle::mutable_recv_metadata(), dtn::BlockInfo::owner(), dtn::MetadataVec::push_back(), dtn::BlockInfo::set_locals(), and dtn::BlockInfo::type().
Referenced by consume().
int dtn::MetadataBlockProcessor::prepare | ( | const Bundle * | bundle, | |
BlockInfoVec * | xmit_blocks, | |||
const BlockInfo * | source, | |||
const LinkRef & | link, | |||
list_owner_t | list | |||
) | [virtual] |
Virtual from BlockProcessor.
Reimplemented from dtn::BlockProcessor.
Definition at line 102 of file MetadataBlockProcessor.cc.
References ASSERT, dtn::BundleProtocol::BLOCK_FLAG_DISCARD_BLOCK_ONERROR, BP_FAIL, BP_SUCCESS, dtn::BlockInfo::flags(), dtn::BlockInfo::locals(), dtn::log, dtn::BundleProtocol::METADATA_BLOCK, dtn::BlockInfo::owner(), and dtn::BlockInfo::type().
void dtn::MetadataBlockProcessor::prepare_generated_metadata | ( | Bundle * | bundle, | |
BlockInfoVec * | blocks, | |||
const LinkRef & | link | |||
) |
Determines the generated metadata (not received metadata, which is handled by the prepare() method) to be included in an outgoing bundle.
Definition at line 155 of file MetadataBlockProcessor.cc.
References ASSERT, dtn::BlockProcessor::BlockInfo, dtn::LinkMetadataSet::find_blocks(), dtn::Bundle::generated_metadata(), and dtn::Bundle::lock().
bool dtn::MetadataBlockProcessor::validate | ( | const Bundle * | bundle, | |
BlockInfoVec * | block_list, | |||
BlockInfo * | block, | |||
status_report_reason_t * | reception_reason, | |||
status_report_reason_t * | deletion_reason | |||
) | [virtual] |
Virtual from BlockProcessor.
Reimplemented from dtn::BlockProcessor.
Definition at line 67 of file MetadataBlockProcessor.cc.
References ASSERT, handle_error(), dtn::BlockInfo::locals(), dtn::log, dtn::BundleProtocol::METADATA_BLOCK, dtn::BlockInfo::owner(), dtn::BlockInfo::type(), and dtn::BlockProcessor::validate().