# PSingleMonitoredSocket Class Reference

This concrete class monitors a single scoket bound to a specific interface or address. More...

`#include <psockbun.h>`

Inheritance diagram for PSingleMonitoredSocket:

List of all members.

## Public Member Functions

| PSingleMonitoredSocket (const PString &theInterface, bool reuseAddr=false, PNatMethod *natMethod=NULL)
| ~PSingleMonitoredSocket ()
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 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.
bool | IsInterface (const PString &iface) const

## Protected Attributes

PString | theInterface
InterfaceEntry | theEntry
SocketInfo | theInfo

## Detailed Description

This concrete class monitors a single scoket bound to a specific interface or address.

The interface name may be a partial descriptor such as "%eth0".

## Constructor & Destructor Documentation

PSingleMonitoredSocket::PSingleMonitoredSocket | ( | const PString & | theInterface,
|  | bool | reuseAddr = `false`,
|  | PNatMethod * | natMethod = `NULL` |
| ) |  |  |

PSingleMonitoredSocket::~PSingleMonitoredSocket | ( |  | ) |

## Member Function Documentation

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

Close all socket(s).

Implements PMonitoredSockets.

virtual PBoolean PSingleMonitoredSocket::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 PSingleMonitoredSocket::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"

Parameters:

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

Reimplemented from PInterfaceMonitorClient.

bool PSingleMonitoredSocket::IsInterface | ( | const PString & | iface | ) | const`[protected]`

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

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

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

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

virtual PBoolean PSingleMonitoredSocket::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.

virtual PChannel::Errors PSingleMonitoredSocket::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 PSingleMonitoredSocket::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

InterfaceEntry PSingleMonitoredSocket::theEntry `[protected]`

SocketInfo PSingleMonitoredSocket::theInfo `[protected]`

PString PSingleMonitoredSocket::theInterface `[protected]`

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

- psockbun.h