00001 #include "EchoWorker.h" 00002 #include "net/ConvergenceLayer.h" 00003 #include "ibrdtn/utils/Utils.h" 00004 #include <ibrcommon/Logger.h> 00005 00006 using namespace dtn::core; 00007 using namespace dtn::data; 00008 00009 namespace dtn 00010 { 00011 namespace daemon 00012 { 00013 EchoWorker::EchoWorker() 00014 { 00015 AbstractWorker::initialize("/echo", true); 00016 } 00017 00018 void EchoWorker::callbackBundleReceived(const Bundle &b) 00019 { 00020 try { 00021 const PayloadBlock &payload = b.getBlock<PayloadBlock>(); 00022 00023 // generate a echo 00024 Bundle echo; 00025 00026 // make a copy of the payload block 00027 ibrcommon::BLOB::Reference ref = payload.getBLOB(); 00028 echo.push_back(ref); 00029 00030 // set destination and source 00031 echo._destination = b._source; 00032 echo._source = getWorkerURI(); 00033 echo._lifetime = b._lifetime; 00034 00035 IBRCOMMON_LOGGER_DEBUG(5) << "echo request received, replying!" << IBRCOMMON_LOGGER_ENDL; 00036 00037 // send it 00038 transmit( echo ); 00039 } catch (dtn::data::Bundle::NoSuchBlockFoundException ex) { 00040 00041 } 00042 } 00043 } 00044 }
1.7.1