00001 /* 00002 * File: McTree.h 00003 * Author: cwioro 00004 * 00005 * Created on May 21, 2014, 11:54 AM 00006 */ 00007 00008 #ifndef MCTREE_H 00009 #define MCTREE_H 00010 00011 class McTree { 00012 public: 00013 McTree(); 00014 McTree(const McTree& orig); 00015 virtual ~McTree(); 00016 bool activateBestRoute(route_request* rreq_logging); 00017 bool activateRoute(std::string* hostname_source, uint32_t* id, unsigned char* mac_adr); 00018 bool routeIsNew(routing_entry* r); 00019 bool processFrame(unsigned char* src); 00020 bool addDownlinkAsMember(mac* m); 00021 bool addDownlinkAsConnector(mac* m); 00022 bool addWaitingRequest(RouteRequest* req, unsigned char* source_mac); 00023 bool propagateFrame(unsigned char* sender_mac); 00024 void safeOutgoingRequest(RouteRequest* req); 00025 void resetTmpFields(); 00026 bool downlinkExsists(unsigned char* m); 00027 bool removeMacIfExsists(unsigned char* m); 00028 void printTree(); 00029 00030 bool operator=(const McTree* other); 00031 00032 std::string group_name_; 00033 routing_entry* route_uplink_; 00034 RouteRequest* outgoing_request_; 00035 std::list<mac*> downlinks_l_; 00036 unsigned long time_stamp_; 00037 00038 std::list<RouteRequest*> waiting_requests_l_; 00039 std::list<routing_entry*> routing_entries_l_; 00040 std::list<routing_entry*> routing_entries_downlinks_l_; 00041 00042 bool member; 00043 bool activated; 00044 bool connected; //indicates if the node is actually connected to the uplink 00045 bool root; //true if current robot is root of the tree 00046 00047 00048 00049 00050 private: 00051 00052 00053 00054 }; 00055 00056 00057 00058 #endif /* MCTREE_H */ 00059