# PMonitoredSocketBundle Class Reference

This concrete class bundles a set of UDP sockets which are dynamically adjusted as interfaces are added and removed from the system. More...

`#include <psockbun.h>`

Inheritance diagram for PMonitoredSocketBundle:

List of all members.

## Public Member Functions

| PMonitoredSocketBundle (bool reuseAddr=false, PNatMethod *natMethod=NULL)
| ~PMonitoredSocketBundle ()
virtual PStringArray | GetInterfaces (bool includeLoopBack=false, const PIPSocket::Address &destination=PIPSocket::GetDefaultIpAny())
| Get an array of all current interface descriptors, possibly including the loopback (127.0.0.1) interface.
virtual PBoolean | Open (WORD port)
| Open the socket(s) using the specified port.
virtual PBoolean | Close ()
| Close all socket(s).
virtual PBoolean | GetAddress (const PString &iface, PIPSocket::Address &address, WORD &port, PBoolean usingNAT) const
| Get the local address for the given interface.
virtual PChannel::Errors | WriteToBundle (const void *buf, PINDEX len, const PIPSocket::Address &addr, WORD port, const PString &iface, PINDEX &lastWriteCount)
| Write to the remote address/port using the socket(s) available.
virtual PChannel::Errors | ReadFromBundle (void *buf, PINDEX len, PIPSocket::Address &addr, WORD &port, PString &iface, PINDEX &lastReadCount, const PTimeInterval &timeout)
| Read fram a remote address/port using the socket(s) available.

## Protected Types

typedef std::map< std::string, SocketInfo > | SocketInfoMap_T

## Protected Member Functions

virtual void | OnAddInterface (const InterfaceEntry &entry)
| Call back function for when an interface has been added to the system.
virtual void | OnRemoveInterface (const InterfaceEntry &entry)
| Call back function for when an interface has been removed from the system.
void | OpenSocket (const PString &iface)
void | CloseSocket (SocketInfoMap_T::iterator iterSocket)

## Protected Attributes

SocketInfoMap_T | socketInfoMap

## Detailed Description

This concrete class bundles a set of UDP sockets which are dynamically adjusted as interfaces are added and removed from the system.

## Member Typedef Documentation

typedef std::map<std::string, SocketInfo> PMonitoredSocketBundle::SocketInfoMap_T `[protected]`

## Constructor & Destructor Documentation

PMonitoredSocketBundle::PMonitoredSocketBundle | ( | bool | reuseAddr = `false`,
|  | PNatMethod * | natMethod = `NULL` |
| ) |  |  |

PMonitoredSocketBundle::~PMonitoredSocketBundle | ( |  | ) |

## Member Function Documentation

virtual PBoolean PMonitoredSocketBundle::Close | ( |  | ) | `[virtual]`

Close all socket(s).

Implements PMonitoredSockets.

void PMonitoredSocketBundle::CloseSocket | ( | SocketInfoMap_T::iterator | iterSocket | ) | `[protected]`

virtual PBoolean PMonitoredSocketBundle::GetAddress | ( | const PString & | iface,
|  | PIPSocket::Address & | address,
|  | WORD & | port,
|  | PBoolean | usingNAT |
| ) |  |  | const`[virtual]`

Get the local address for the given interface.

Parameters:

  iface | Interface to get address for
  address | Address of interface
  port | Port listening on
  usingNAT | Require NAT address/port

Implements PMonitoredSockets.

virtual PStringArray PMonitoredSocketBundle::GetInterfaces | ( | bool | includeLoopBack = `false`,
|  | const PIPSocket::Address & | destination = `PIPSocket::GetDefaultIpAny()` |
| ) |  |  | `[virtual]`

Get an array of all current interface descriptors, possibly including the loopback (127.0.0.1) interface.

Note the names are of the form ipname, eg "10.0.1.11%3Com 3C90x Ethernet Adapter" or "192.168.0.10%eth0". If destination is not 'any' and a filter is set, filters the interface list before returning it.

Parameters:

  includeLoopBack | Flag for if loopback is to included in list
  destination | Optional destination for selecting specific interface

Reimplemented from PInterfaceMonitorClient.

virtual void PMonitoredSocketBundle::OnAddInterface | ( | const InterfaceEntry & | entry | ) | `[protected, virtual]`

Call back function for when an interface has been added to the system.

virtual void PMonitoredSocketBundle::OnRemoveInterface | ( | const InterfaceEntry & | entry | ) | `[protected, virtual]`

Call back function for when an interface has been removed from the system.

virtual PBoolean PMonitoredSocketBundle::Open | ( | WORD | port | ) | `[virtual]`

Open the socket(s) using the specified port.

If port is zero then a system allocated port is used. In this case and when multiple interfaces are supported, all sockets use the same dynamic port value.

Returns true if all sockets are opened.

Implements PMonitoredSockets.

void PMonitoredSocketBundle::OpenSocket | ( | const PString & | iface | ) | `[protected]`

virtual PChannel::Errors PMonitoredSocketBundle::ReadFromBundle | ( | void * | buf,
|  | PINDEX | len,
|  | PIPSocket::Address & | addr,
|  | WORD & | port,
|  | PString & | iface,
|  | PINDEX & | lastReadCount,
|  | const PTimeInterval & | timeout |
| ) |  |  | `[virtual]`

Read fram a remote address/port using the socket(s) available.

If the iface parameter is empty, then the first data received on any socket(s) is used, and the iface parameter is set to the name of that interface. Otherwise the iface parameter indicates the specific interface socket to read the data from.

Implements PMonitoredSockets.

virtual PChannel::Errors PMonitoredSocketBundle::WriteToBundle | ( | const void * | buf,
|  | PINDEX | len,
|  | const PIPSocket::Address & | addr,
|  | WORD | port,
|  | const PString & | iface,
|  | PINDEX & | lastWriteCount |
| ) |  |  | `[virtual]`

Write to the remote address/port using the socket(s) available.

If the iface parameter is empty, then the data is written to all socket(s). Otherwise the iface parameter indicates the specific interface socket to write the data to.

Implements PMonitoredSockets.

## Member Data Documentation

SocketInfoMap_T PMonitoredSocketBundle::socketInfoMap `[protected]`

The documentation for this class was generated from the following file:

- psockbun.h