#include <Groupsock.hh>
Collaboration diagram for GroupsockLookupTable:

Public Member Functions | |
| Groupsock * | Fetch (UsageEnvironment &env, netAddressBits groupAddress, Port port, u_int8_t ttl, Boolean &isNew) |
| Groupsock * | Fetch (UsageEnvironment &env, netAddressBits groupAddress, netAddressBits sourceFilterAddr, Port port, Boolean &isNew) |
| Groupsock * | Lookup (netAddressBits groupAddress, Port port) |
| Groupsock * | Lookup (netAddressBits groupAddress, netAddressBits sourceFilterAddr, Port port) |
| Groupsock * | Lookup (UsageEnvironment &env, int sock) |
| Boolean | Remove (Groupsock const *groupsock) |
Private Member Functions | |
| Groupsock * | AddNew (UsageEnvironment &env, netAddressBits groupAddress, netAddressBits sourceFilterAddress, Port port, u_int8_t ttl) |
Private Attributes | |
| AddressPortLookupTable | fTable |
Friends | |
| class | Iterator |
Data Structures | |
| class | Iterator |
Definition at line 162 of file Groupsock.hh.
| 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().
| Groupsock * GroupsockLookupTable::Lookup | ( | netAddressBits | groupAddress, | |
| netAddressBits | sourceFilterAddr, | |||
| Port | port | |||
| ) |
Definition at line 588 of file Groupsock.cpp.
References fTable, and AddressPortLookupTable::Lookup().
| 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 }
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 }
friend class Iterator [friend] |
Definition at line 199 of file Groupsock.hh.
1.5.2