00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #ifndef __EPIDEMIC_EPIDEMIC_APP_H__
00032 #define __EPIDEMIC_EPIDEMIC_APP_H__
00033
00034 #include "config.h"
00035
00036 #include "mobility/MobileApp.h"
00037 #include "mobility/MockLink.h"
00038
00039 #include <map>
00040
00041 namespace Epidemic
00042 {
00043 class EpidemicStore;
00044
00047
00049 class EpidemicApp : public Mobility::MobileApp
00050 {
00051 public :
00053 static DTN::ByteString kIdentifier;
00054
00056 static unsigned char kSummaryVector;
00058 static unsigned char kDataRequest;
00059
00061 typedef std::map< DTN::ByteString , Mobility::MockLink* > LinkMap;
00062
00067 EpidemicApp( EpidemicStore* es,
00068 DTN::Link* l,
00069 const struct timeval& t );
00070
00072 virtual ~EpidemicApp();
00073
00074 void newNeighbor( const DTN::ByteString& addr );
00075
00079 DTN::Link* getLink( const DTN::ByteString& addr );
00080
00081 protected :
00082 const DTN::ByteString& appID() const { return kIdentifier; }
00083
00084 void process( const DTN::Bundle& b );
00085
00086 private :
00087 EpidemicStore* m_store;
00088 LinkMap m_linkMap;
00089 DTN::Link* m_link;
00090 struct timeval m_lifetime;
00091 };
00092
00094 }
00095
00096 #endif // __EPIDEMIC_EPIDEMIC_APP_H__