|
IBR-DTNSuite 0.6
|
00001 /* 00002 * EpidemicControlMessage.h 00003 * 00004 * Created on: 24.01.2011 00005 * Author: morgenro 00006 */ 00007 00008 #ifndef EPIDEMICCONTROLMESSAGE_H_ 00009 #define EPIDEMICCONTROLMESSAGE_H_ 00010 00011 #include "routing/SummaryVector.h" 00012 #include <ibrdtn/data/SDNV.h> 00013 #include <ibrdtn/data/BundleString.h> 00014 #include <iostream> 00015 00016 namespace dtn 00017 { 00018 namespace routing 00019 { 00020 class EpidemicControlMessage 00021 { 00022 public: 00023 enum MessageType 00024 { 00025 ECM_QUERY_SUMMARY_VECTOR = 0, 00026 ECM_RESPONSE = 1 00027 } type; 00028 00029 enum MessageFlags 00030 { 00031 ECM_CONTAINS_SUMMARY_VECTOR = 1 << 0, 00032 ECM_CONTAINS_PURGE_VECTOR = 1 << 1 00033 }; 00034 00035 char flags; 00036 00037 EpidemicControlMessage(); 00038 virtual ~EpidemicControlMessage(); 00039 00040 void setPurgeVector(const SummaryVector &vector); 00041 void setSummaryVector(const SummaryVector &vector); 00042 const SummaryVector& getSummaryVector() const; 00043 const SummaryVector& getPurgeVector() const; 00044 00045 friend std::ostream& operator<<(std::ostream&, const EpidemicControlMessage&); 00046 friend std::istream& operator>>(std::istream&, EpidemicControlMessage&); 00047 00048 private: 00049 dtn::data::SDNV _counter; 00050 dtn::data::BundleString _data; 00051 SummaryVector _vector; 00052 SummaryVector _purge; 00053 }; 00054 } 00055 } 00056 00057 #endif /* EPIDEMICCONTROLMESSAGE_H_ */