IBR-DTNSuite  0.10
EchoWorker.cpp
Go to the documentation of this file.
1 /*
2  * EchoWorker.cpp
3  *
4  * Copyright (C) 2011 IBR, TU Braunschweig
5  *
6  * Written-by: Johannes Morgenroth <morgenroth@ibr.cs.tu-bs.de>
7  *
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  *
20  */
21 
22 #include "EchoWorker.h"
23 #include "net/ConvergenceLayer.h"
24 #include "ibrdtn/utils/Utils.h"
26 #include <ibrcommon/Logger.h>
27 
28 using namespace dtn::core;
29 using namespace dtn::data;
30 
31 namespace dtn
32 {
33  namespace daemon
34  {
35  EchoWorker::EchoWorker()
36  {
37  AbstractWorker::initialize("/echo", 11, true);
38  }
39 
40  void EchoWorker::callbackBundleReceived(const Bundle &b)
41  {
42  try {
43  const PayloadBlock &payload = b.find<PayloadBlock>();
44 
45  // generate a echo
46  Bundle echo;
47 
48  // make a copy of the payload block
49  ibrcommon::BLOB::Reference ref = payload.getBLOB();
50  echo.push_back(ref);
51 
52  // set destination and mark the bundle as singleton destination
53  echo.destination = b.source;
55 
56  // set the source of the bundle
57  echo.source = getWorkerURI();
58 
59  // set the lifetime to the same value as the received bundle
60  echo.lifetime = b.lifetime;
61 
62  try {
64  dtn::data::TrackingBlock &target = echo.push_back<dtn::data::TrackingBlock>();
65 
66  // copy tracking block
67  target = tracking;
69 
70  IBRCOMMON_LOGGER_DEBUG_TAG("EchoWorker", 5) << "echo request received, replying!" << IBRCOMMON_LOGGER_ENDL;
71 
72  // send it
73  transmit( echo );
75 
76  }
77  }
78  }
79 }