From abef27c309c3e3bc607ab3fd44ef4479290911f7 Mon Sep 17 00:00:00 2001 From: Othmar Gsenger Date: Thu, 28 Feb 2008 15:16:46 +0000 Subject: added joobla template --- homepage/citrus_ice.zip | Bin 0 -> 65500 bytes networkAddress.h | 11 +++++++++++ routingTable.cpp | 12 ++++++++++++ routingTable.h | 1 + syncRouteCommand.cpp | 8 ++++---- syncRouteCommand.h | 16 +++++++++------- 6 files changed, 37 insertions(+), 11 deletions(-) create mode 100644 homepage/citrus_ice.zip diff --git a/homepage/citrus_ice.zip b/homepage/citrus_ice.zip new file mode 100644 index 0000000..154e62f Binary files /dev/null and b/homepage/citrus_ice.zip differ diff --git a/networkAddress.h b/networkAddress.h index 1192fb3..ccc0750 100644 --- a/networkAddress.h +++ b/networkAddress.h @@ -30,6 +30,8 @@ #ifndef _NETWORK_ADDRESS_H #define _NETWORK_ADDRESS_H +#include +#include #include "threadUtils.hpp" #include "datatypes.h" @@ -72,6 +74,15 @@ protected: network_address_type_t network_address_type_; private: NetworkAddress operator=(const NetworkAddress &s); + friend class boost::serialization::access; + template + void serialize(Archive & ar, const unsigned int version) + { + ar & network_address_type_; + ar & ipv4_address_; + ar & ipv6_address_; + ar & ethernet_address_; + } }; #endif diff --git a/routingTable.cpp b/routingTable.cpp index 10a6041..a2b5f56 100644 --- a/routingTable.cpp +++ b/routingTable.cpp @@ -91,6 +91,18 @@ u_int16_t RoutingTable::getRoute(const NetworkAddress & addr) return 0; } +u_int16_t& RoutingTable::getOrNewRoutingTEUnlocked(const NetworkAddress & addr) +{ + RoutingMap::iterator it = routes_.find(addr); + if(it!=routes_.end()) + return it->second; + + routes_.insert(RoutingMap::value_type(addr, 0)); + it = routes_.find(addr); + return it->second; +} + + void RoutingTable::clear() { Lock lock(mutex_); diff --git a/routingTable.h b/routingTable.h index f4f89c3..4466414 100644 --- a/routingTable.h +++ b/routingTable.h @@ -53,6 +53,7 @@ public: bool empty(); void clear(); Mutex& getMutex(); + u_int16_t& getOrNewRoutingTEUnlocked(const NetworkAddress & addr); private: static Mutex instMutex; diff --git a/syncRouteCommand.cpp b/syncRouteCommand.cpp index 7ba6a18..e1b354b 100644 --- a/syncRouteCommand.cpp +++ b/syncRouteCommand.cpp @@ -4,12 +4,12 @@ SyncRouteCommand::SyncRouteCommand() { } -SyncRouteCommand::SyncRouteCommand( u_int16_t mux ) -:mux_(mux) +SyncRouteCommand::SyncRouteCommand( const NetworkAddress & addr ) +:addr_(addr) { } -u_int16_t SyncRouteCommand::getMux() const +NetworkAddress SyncRouteCommand::getAddr() const { - return mux_; + return addr_; } diff --git a/syncRouteCommand.h b/syncRouteCommand.h index 913673c..2e38eb4 100644 --- a/syncRouteCommand.h +++ b/syncRouteCommand.h @@ -4,25 +4,27 @@ #include #include "threadUtils.hpp" +#include "networkAddress.h" +#include "routingTable.h" class SyncRouteCommand { public: - SyncRouteCommand(u_int16_t mux); + SyncRouteCommand(const NetworkAddress & ); SyncRouteCommand(); - u_int16_t getMux() const; + NetworkAddress getAddr() const; private: SyncRouteCommand(const SyncRouteCommand &); - u_int16_t mux_; + NetworkAddress addr_; friend class boost::serialization::access; template void serialize(Archive & ar, const unsigned int version) { - //Lock lock(gRoutingTable.getMutex()); - ar & mux_; - // ConnectionParam & conn = cl_.getOrNewConnectionUnlocked(mux_); - // ar & conn; + Lock lock(gRoutingTable.getMutex()); + ar & addr_; + u_int16_t & mux = gRoutingTable.getOrNewRoutingTEUnlocked(addr_); + ar & mux; } }; -- cgit v1.2.3