#include <NATMap.h>
Public Member Functions | |
NATMap () | |
~NATMap () | |
void | insertElement (NATData server_map, int stor_id, NATData storage_map) |
NATData | getElement (NATData server_map, int stor_id) |
void | removeElement (NATData server_map, int stor_id) |
bool | findElement (NATData server_map, int stor_id) |
Private Attributes | |
map< pair< NATData, int > , NATData > | nat_map |
pthread_mutex_t | m_Mutex |
Definition at line 48 of file NATMap.h.
NATMap::NATMap | ( | ) |
Definition at line 66 of file NATMap.cpp.
NATMap::~NATMap | ( | ) |
Definition at line 72 of file NATMap.cpp.
00073 { 00074 // Destroi o mutex da classe. 00075 pthread_mutex_destroy( &m_Mutex ); 00076 }
bool NATMap::findElement | ( | NATData | server_map, | |
int | stor_id | |||
) |
Definition at line 136 of file NATMap.cpp.
00137 { 00138 bool isFound; 00139 map<pair<NATData, int>, NATData>::iterator Element; 00140 pair<NATData, int> current_pair( server_map, stor_id ); 00141 00142 pthread_mutex_lock( &m_Mutex ); 00143 00144 // Obtem o elemento dado pela chave. Se ele nao existir, entao Element sera 00145 // igual a nat_map.end(). Entao, somente deveremos verificar se o iterador 00146 // e diferente de nat_map.end(). 00147 Element = nat_map.find( current_pair ); 00148 isFound = ( Element != nat_map.end() ); 00149 00150 pthread_mutex_unlock( &m_Mutex ); 00151 00152 return( isFound ); 00153 }
Definition at line 101 of file NATMap.cpp.
00102 { 00103 pair<NATData, int> current_pair( server_map, stor_id ); 00104 NATData Data; 00105 00106 pthread_mutex_lock( &m_Mutex ); 00107 00108 #ifdef RIO_DEBUG2 00109 struct in_addr ip1, ip2; 00110 ip1.s_addr = server_map.nat_addr; 00111 ip2.s_addr = nat_map[current_pair].nat_addr; 00112 RioErr << "[NATMap] Retrieving NAT mapping" << endl; 00113 RioErr << inet_ntoa( ip1 ) << " , " 00114 << ntohs( server_map.nat_port ) << " , " 00115 << stor_id << " ==> "; 00116 fflush( stderr ); 00117 RioErr << inet_ntoa( ip2 ) << " , " 00118 << ntohs( nat_map[current_pair].nat_port ) << endl; 00119 #endif 00120 00121 Data = nat_map[current_pair]; 00122 pthread_mutex_unlock( &m_Mutex ); 00123 return Data; 00124 };
Definition at line 78 of file NATMap.cpp.
00079 { 00080 pair<NATData, int> current_pair( server_map, stor_id ); 00081 00082 pthread_mutex_lock( &m_Mutex ); 00083 nat_map[current_pair] = storage_map; 00084 00085 #ifdef RIO_DEBUG2 00086 struct in_addr ip1, ip2; 00087 ip1.s_addr = server_map.nat_addr; 00088 ip2.s_addr = storage_map.nat_addr; 00089 RioErr << "[NATMap] Inserting NAT mapping" << endl; 00090 RioErr << inet_ntoa( ip1 ) << " , " 00091 << ntohs( server_map.nat_port ) << " , " 00092 << stor_id << " ==> "; 00093 fflush( stderr ); 00094 RioErr << inet_ntoa( ip2 ) << " , " 00095 << ntohs( storage_map.nat_port ) << endl; 00096 #endif 00097 00098 pthread_mutex_unlock( &m_Mutex ); 00099 };
void NATMap::removeElement | ( | NATData | server_map, | |
int | stor_id | |||
) |
Definition at line 126 of file NATMap.cpp.
pthread_mutex_t NATMap::m_Mutex [private] |
map<pair<NATData, int>, NATData> NATMap::nat_map [private] |