IBR-DTNSuite 0.6

daemon/src/routing/epidemic/EpidemicControlMessage.h

Go to the documentation of this file.
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_ */