Main Page | Namespace List | Class Hierarchy | Alphabetical List | Compound List | File List | Compound Members | File Members

Pkt_Hash_Table Class Reference

#include <hash_table.h>

Collaboration diagram for Pkt_Hash_Table:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 Pkt_Hash_Table ()
void reset ()
void put_in_hash (hdr_cdiff *)
Pkt_Hash_EntryGetHash (ns_addr_t sender_id, unsigned int pkt_num)

Public Attributes

Tcl_HashTable htable

Constructor & Destructor Documentation

Pkt_Hash_Table::Pkt_Hash_Table  )  [inline]
 

Definition at line 67 of file hash_table.h.

References htable.

00067                    {
00068     Tcl_InitHashTable(&htable, 3);
00069   }


Member Function Documentation

Pkt_Hash_Entry * Pkt_Hash_Table::GetHash ns_addr_t  sender_id,
unsigned int  pkt_num
 

Definition at line 69 of file hash_table.cc.

References ns_addr_t::addr_, htable, and ns_addr_t::port_.

Referenced by DiffusionProb::consider_new(), DiffusionProb::consider_old(), OmniMcastAgent::ConsiderNew(), FloodingAgent::ConsiderNew(), DiffusionProb::ForwardTxFailed(), DiffusionRate::ProcessPosReinf(), OmniMcastAgent::recv(), FloodingAgent::recv(), DiffusionAgent::recv(), DiffusionRate::recv(), DiffusionProb::recv(), and DiffusionProb::ReTxData().

00071 {
00072   unsigned int key[3];
00073 
00074   key[0] = sender_id.addr_;
00075   key[1] = sender_id.port_;
00076   key[2] = pk_num;
00077 
00078   Tcl_HashEntry *entryPtr = Tcl_FindHashEntry(&htable, (char *)key);
00079 
00080   if (entryPtr == NULL )
00081      return NULL;
00082 
00083   return (Pkt_Hash_Entry *)Tcl_GetHashValue(entryPtr);
00084 }

void Pkt_Hash_Table::put_in_hash hdr_cdiff  ) 
 

Definition at line 87 of file hash_table.cc.

References hdr_cdiff::forward_agent_id, Pkt_Hash_Entry::forwarder_id, Pkt_Hash_Entry::from_agent, htable, Pkt_Hash_Entry::is_forwarded, Pkt_Hash_Entry::num_from, hdr_cdiff::pk_num, hdr_cdiff::sender_id, and Pkt_Hash_Entry::timer.

Referenced by OmniMcastAgent::recv(), FloodingAgent::recv(), DiffusionAgent::recv(), DiffusionRate::recv(), and DiffusionProb::recv().

00088 {
00089     Tcl_HashEntry *entryPtr;
00090     Pkt_Hash_Entry    *hashPtr;
00091     unsigned int key[3];
00092     int newPtr;
00093 
00094     key[0]=(dfh->sender_id).addr_;
00095     key[1]=(dfh->sender_id).port_;
00096     key[2]=dfh->pk_num;
00097 
00098     entryPtr = Tcl_CreateHashEntry(&htable, (char *)key, &newPtr);
00099     if (!newPtr)
00100       return;
00101 
00102     hashPtr = new Pkt_Hash_Entry;
00103     hashPtr->forwarder_id = dfh->forward_agent_id;
00104     hashPtr->from_agent = NULL;
00105     hashPtr->is_forwarded = false;
00106     hashPtr->num_from = 0;
00107     hashPtr->timer = NULL;
00108 
00109     Tcl_SetHashValue(entryPtr, hashPtr);
00110 }

void Pkt_Hash_Table::reset  ) 
 

Definition at line 54 of file hash_table.cc.

References htable.

Referenced by OmniMcastAgent::reset(), FloodingAgent::reset(), and DiffusionAgent::reset().

00055 {
00056   Pkt_Hash_Entry *hashPtr;
00057   Tcl_HashEntry *entryPtr;
00058   Tcl_HashSearch searchPtr;
00059 
00060   entryPtr = Tcl_FirstHashEntry(&htable, &searchPtr);
00061   while (entryPtr != NULL) {
00062     hashPtr = (Pkt_Hash_Entry *)Tcl_GetHashValue(entryPtr);
00063     delete hashPtr;
00064     Tcl_DeleteHashEntry(entryPtr);
00065     entryPtr = Tcl_NextHashEntry(&searchPtr);
00066   }
00067 }


Member Data Documentation

Tcl_HashTable Pkt_Hash_Table::htable
 

Definition at line 65 of file hash_table.h.

Referenced by GetHash(), Pkt_Hash_Table(), put_in_hash(), and reset().


The documentation for this class was generated from the following files:
Generated on Tue Apr 20 13:08:02 2004 for NS2.26SourcesOriginal by doxygen 1.3.3