NATMap Class Reference

#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

Detailed Description

Definition at line 48 of file NATMap.h.


Constructor & Destructor Documentation

NATMap::NATMap (  ) 

Definition at line 66 of file NATMap.cpp.

00067 {
00068     // Inicializa o mutex da classe.
00069     pthread_mutex_init( &m_Mutex, NULL );
00070 }

NATMap::~NATMap (  ) 

Definition at line 72 of file NATMap.cpp.

00073 {
00074     // Destroi o mutex da classe.
00075     pthread_mutex_destroy( &m_Mutex );
00076 }


Member Function Documentation

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 }

NATData NATMap::getElement ( NATData  server_map,
int  stor_id 
)

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 };

void NATMap::insertElement ( NATData  server_map,
int  stor_id,
NATData  storage_map 
)

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.

00127 {
00128     pair<NATData, int> current_pair( server_map, stor_id );
00129 
00130     pthread_mutex_lock( &m_Mutex );
00131     nat_map.erase( current_pair );
00132     pthread_mutex_unlock( &m_Mutex );
00133 }


Field Documentation

pthread_mutex_t NATMap::m_Mutex [private]

Definition at line 53 of file NATMap.h.

map<pair<NATData, int>, NATData> NATMap::nat_map [private]

Definition at line 51 of file NATMap.h.


The documentation for this class was generated from the following files:
Generated on Wed Jul 4 16:03:35 2012 for RIO by  doxygen 1.6.3