GroupsockLookupTable Class Reference

#include <Groupsock.hh>

Collaboration diagram for GroupsockLookupTable:

Collaboration graph
[legend]

Public Member Functions

GroupsockFetch (UsageEnvironment &env, netAddressBits groupAddress, Port port, u_int8_t ttl, Boolean &isNew)
GroupsockFetch (UsageEnvironment &env, netAddressBits groupAddress, netAddressBits sourceFilterAddr, Port port, Boolean &isNew)
GroupsockLookup (netAddressBits groupAddress, Port port)
GroupsockLookup (netAddressBits groupAddress, netAddressBits sourceFilterAddr, Port port)
GroupsockLookup (UsageEnvironment &env, int sock)
Boolean Remove (Groupsock const *groupsock)

Private Member Functions

GroupsockAddNew (UsageEnvironment &env, netAddressBits groupAddress, netAddressBits sourceFilterAddress, Port port, u_int8_t ttl)

Private Attributes

AddressPortLookupTable fTable

Friends

class Iterator

Data Structures

class  Iterator

Detailed Description

Definition at line 162 of file Groupsock.hh.


Member Function Documentation

Groupsock * GroupsockLookupTable::Fetch ( UsageEnvironment env,
netAddressBits  groupAddress,
Port  port,
u_int8_t  ttl,
Boolean isNew 
)

Definition at line 553 of file Groupsock.cpp.

References AddNew(), env, False, fTable, AddressPortLookupTable::Lookup(), NULL, and True.

00556                                             {
00557   isNew = False;
00558   Groupsock* groupsock;
00559   do {
00560     groupsock = (Groupsock*) fTable.Lookup(groupAddress, (~0), port);
00561     if (groupsock == NULL) { // we need to create one:
00562       groupsock = AddNew(env, groupAddress, (~0), port, ttl);
00563       if (groupsock == NULL) break;
00564       isNew = True;
00565     }
00566   } while (0);
00567 
00568   return groupsock;
00569 }

Groupsock * GroupsockLookupTable::Fetch ( UsageEnvironment env,
netAddressBits  groupAddress,
netAddressBits  sourceFilterAddr,
Port  port,
Boolean isNew 
)

Definition at line 572 of file Groupsock.cpp.

References AddNew(), env, False, fTable, AddressPortLookupTable::Lookup(), NULL, and True.

00575                                             {
00576   isNew = False;
00577   Groupsock* groupsock;
00578   do {
00579     groupsock
00580       = (Groupsock*) fTable.Lookup(groupAddress, sourceFilterAddr, port);
00581     if (groupsock == NULL) { // we need to create one:
00582       groupsock = AddNew(env, groupAddress, sourceFilterAddr, port, 0);
00583       if (groupsock == NULL) break;
00584       isNew = True;
00585     }
00586   } while (0);
00587 
00588   return groupsock;
00589 }

Groupsock * GroupsockLookupTable::Lookup ( netAddressBits  groupAddress,
Port  port 
)

Definition at line 592 of file Groupsock.cpp.

References fTable, and AddressPortLookupTable::Lookup().

00592                                                                    {
00593   return (Groupsock*) fTable.Lookup(groupAddress, (~0), port);
00594 }

Groupsock * GroupsockLookupTable::Lookup ( netAddressBits  groupAddress,
netAddressBits  sourceFilterAddr,
Port  port 
)

Definition at line 597 of file Groupsock.cpp.

References fTable, and AddressPortLookupTable::Lookup().

00598                                                                          {
00599   return (Groupsock*) fTable.Lookup(groupAddress, sourceFilterAddr, port);
00600 }

Groupsock * GroupsockLookupTable::Lookup ( UsageEnvironment env,
int  sock 
)

Definition at line 602 of file Groupsock.cpp.

References env, and getGroupsockBySocket().

00602                                                                        {
00603   return getGroupsockBySocket(env, sock);
00604 }

Boolean GroupsockLookupTable::Remove ( Groupsock const *  groupsock  ) 

Definition at line 606 of file Groupsock.cpp.

References fTable, Groupsock::groupAddress(), Socket::port(), AddressPortLookupTable::Remove(), Groupsock::sourceFilterAddress(), and unsetGroupsockBySocket().

00606                                                                {
00607   unsetGroupsockBySocket(groupsock);
00608   return fTable.Remove(groupsock->groupAddress().s_addr,
00609                        groupsock->sourceFilterAddress().s_addr,
00610                        groupsock->port());
00611 }

Groupsock * GroupsockLookupTable::AddNew ( UsageEnvironment env,
netAddressBits  groupAddress,
netAddressBits  sourceFilterAddress,
Port  port,
u_int8_t  ttl 
) [private]

Definition at line 613 of file Groupsock.cpp.

References AddressPortLookupTable::Add(), env, fTable, NULL, setGroupsockBySocket(), and Socket::socketNum().

Referenced by Fetch().

00616                                                                  {
00617   Groupsock* groupsock;
00618   do {
00619     struct in_addr groupAddr; groupAddr.s_addr = groupAddress;
00620     if (sourceFilterAddress == netAddressBits(~0)) {
00621       // regular, ISM groupsock
00622       groupsock = new Groupsock(env, groupAddr, port, ttl);
00623     } else {
00624       // SSM groupsock
00625       struct in_addr sourceFilterAddr;
00626       sourceFilterAddr.s_addr = sourceFilterAddress;
00627       groupsock = new Groupsock(env, groupAddr, sourceFilterAddr, port);
00628     }
00629 
00630     if (groupsock == NULL || groupsock->socketNum() < 0) break;
00631 
00632     if (!setGroupsockBySocket(env, groupsock->socketNum(), groupsock)) break;
00633 
00634     fTable.Add(groupAddress, sourceFilterAddress, port, (void*)groupsock);
00635   } while (0);
00636 
00637   return groupsock;
00638 }


Friends And Related Function Documentation

friend class Iterator [friend]

Definition at line 199 of file Groupsock.hh.


Field Documentation

AddressPortLookupTable GroupsockLookupTable::fTable [private]

Definition at line 200 of file Groupsock.hh.

Referenced by AddNew(), Fetch(), Lookup(), and Remove().


The documentation for this class was generated from the following files:
Generated on Tue Oct 7 15:39:40 2008 for live by  doxygen 1.5.2