IBR-DTNSuite 0.6

daemon/src/net/DiscoveryAgent.h

Go to the documentation of this file.
00001 /*
00002  * DiscoveryAgent.h
00003  *
00004  *  Created on: 09.09.2009
00005  *      Author: morgenro
00006  */
00007 
00008 #ifndef DISCOVERYAGENT_H_
00009 #define DISCOVERYAGENT_H_
00010 
00011 #include "core/Node.h"
00012 #include "net/Neighbor.h"
00013 #include "net/DiscoveryAnnouncement.h"
00014 #include "net/DiscoveryService.h"
00015 #include "Configuration.h"
00016 
00017 #include <list>
00018 
00019 namespace dtn
00020 {
00021         namespace net
00022         {
00023                 class DiscoveryAgent
00024                 {
00025                 public:
00026                         DiscoveryAgent(const dtn::daemon::Configuration::Discovery &config);
00027                         virtual ~DiscoveryAgent() = 0;
00028 
00029                         void received(const dtn::net::DiscoveryAnnouncement &announcement);
00030 
00031                         void addService(string name, string parameters);
00032                         void addService(dtn::net::DiscoveryServiceProvider *provider);
00033 
00034                 protected:
00035                         virtual void sendAnnoucement(const u_int16_t &sn, std::list<dtn::net::DiscoveryService> &services) = 0;
00036 
00037                         void timeout();
00038 
00039                         const dtn::daemon::Configuration::Discovery &_config;
00040 
00041                 private:
00042                         std::list<Neighbor> _neighbors;
00043                         u_int16_t _sn;
00044                         std::list<dtn::net::DiscoveryService> _services;
00045                 };
00046         }
00047 }
00048 
00049 #endif /* DISCOVERYAGENT_H_ */