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 544 of file Groupsock.cpp.

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

00547                                             {
00548   isNew = False;
00549   Groupsock* groupsock;
00550   do {
00551     groupsock = (Groupsock*) fTable.Lookup(groupAddress, (~0), port);
00552     if (groupsock == NULL) { // we need to create one:
00553       groupsock = AddNew(env, groupAddress, (~0), port, ttl);
00554       if (groupsock == NULL) break;
00555       isNew = True;
00556     }
00557   } while (0);
00558 
00559   return groupsock;
00560 }

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

Definition at line 563 of file Groupsock.cpp.

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

00566                                             {
00567   isNew = False;
00568   Groupsock* groupsock;
00569   do {
00570     groupsock
00571       = (Groupsock*) fTable.Lookup(groupAddress, sourceFilterAddr, port);
00572     if (groupsock == NULL) { // we need to create one:
00573       groupsock = AddNew(env, groupAddress, sourceFilterAddr, port, 0);
00574       if (groupsock == NULL) break;
00575       isNew = True;
00576     }
00577   } while (0);
00578 
00579   return groupsock;
00580 }

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

Definition at line 583 of file Groupsock.cpp.

References fTable, and AddressPortLookupTable::Lookup().

00583                                                                    {
00584   return (Groupsock*) fTable.Lookup(groupAddress, (~0), port);
00585 }

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

Definition at line 588 of file Groupsock.cpp.

References fTable, and AddressPortLookupTable::Lookup().

00589                                                                          {
00590   return (Groupsock*) fTable.Lookup(groupAddress, sourceFilterAddr, port);
00591 }

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

Definition at line 593 of file Groupsock.cpp.

References env, and getGroupsockBySocket().

00593                                                                        {
00594   return getGroupsockBySocket(env, sock);
00595 }

Boolean GroupsockLookupTable::Remove ( Groupsock const *  groupsock  ) 

Definition at line 597 of file Groupsock.cpp.

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

00597                                                                {
00598   unsetGroupsockBySocket(groupsock);
00599   return fTable.Remove(groupsock->groupAddress().s_addr,
00600                        groupsock->sourceFilterAddress().s_addr,
00601                        groupsock->port());
00602 }

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

Definition at line 604 of file Groupsock.cpp.

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

Referenced by Fetch().

00607                                                                  {
00608   Groupsock* groupsock;
00609   do {
00610     struct in_addr groupAddr; groupAddr.s_addr = groupAddress;
00611     if (sourceFilterAddress == netAddressBits(~0)) {
00612       // regular, ISM groupsock
00613       groupsock = new Groupsock(env, groupAddr, port, ttl);
00614     } else {
00615       // SSM groupsock
00616       struct in_addr sourceFilterAddr;
00617       sourceFilterAddr.s_addr = sourceFilterAddress;
00618       groupsock = new Groupsock(env, groupAddr, sourceFilterAddr, port);
00619     }
00620 
00621     if (groupsock == NULL || groupsock->socketNum() < 0) break;
00622 
00623     if (!setGroupsockBySocket(env, groupsock->socketNum(), groupsock)) break;
00624 
00625     fTable.Add(groupAddress, sourceFilterAddress, port, (void*)groupsock);
00626   } while (0);
00627 
00628   return groupsock;
00629 }


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 Thu May 17 07:15:18 2012 for live by  doxygen 1.5.2