PTLib
Version 2.18.8
|
This is a base class for UDP socket(s) that are monitored for interface changes. More...
#include <psockbun.h>
Classes | |
struct | BundleParams |
struct | SocketInfo |
Public Types | |
typedef PIPSocket::InterfaceEntry | InterfaceEntry |
![]() | |
enum | Comparison { LessThan = -1, EqualTo = 0, GreaterThan = 1 } |
Result of the comparison operation performed by the Compare() function. More... | |
Public Member Functions | |
virtual PBoolean | Open (WORD port)=0 |
Open the socket(s) using the specified port. More... | |
PBoolean | IsOpen () const |
Indicate if the socket(s) are open and ready for reads/writes. More... | |
virtual PBoolean | Close ()=0 |
Close all socket(s) More... | |
WORD | GetPort () const |
Return the local port number being used by the socket(s) More... | |
virtual bool | SetQoS (const PIPSocket::QoS &qos)=0 |
Set the quality of service for sockets. More... | |
virtual PBoolean | GetAddress (const PString &iface, PIPSocket::Address &address, WORD &port, PBoolean usingNAT) const =0 |
Get the local address for the given interface. More... | |
virtual void | WriteToBundle (BundleParams ¶m)=0 |
Write to the remote address/port using the socket(s) available. More... | |
virtual void | ReadFromBundle (BundleParams ¶m)=0 |
Read fram a remote address/port using the socket(s) available. More... | |
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. More... | |
virtual bool | GetInterfaceInfo (const PString &iface, InterfaceEntry &info) const |
Return information about an active interface given the descriptor string. More... | |
![]() | |
PSafeObject () | |
Create a thread safe object. More... | |
PSafeObject (const PSafeObject &other) | |
PSafeObject (PSafeObject *indirectLock) | |
PSafeObject (PReadWriteMutex &mutex) | |
~PSafeObject () | |
PBoolean | SafeReference () |
Increment the reference count for object. More... | |
PBoolean | SafeDereference () |
Decrement the reference count for object. More... | |
__inline bool | LockReadOnly () const |
Lock the object for Read Only access. More... | |
__inline bool | LockReadOnly (const PDebugLocation &location) const |
__inline void | UnlockReadOnly () const |
Release the read only lock on an object. More... | |
__inline void | UnlockReadOnly (const PDebugLocation &location) const |
__inline bool | LockReadWrite () const |
Lock the object for Read/Write access. More... | |
__inline bool | LockReadWrite (const PDebugLocation &location) const |
__inline void | UnlockReadWrite () const |
Release the read/write lock on an object. More... | |
__inline void | UnlockReadWrite (const PDebugLocation &location) const |
void | SafeRemove () |
Set the removed flag. More... | |
unsigned | IsSafelyBeingRemoved () const |
Indicate the object is being safely removed. More... | |
PBoolean | SafelyCanBeDeleted () const |
Determine if the object can be safely deleted. More... | |
virtual bool | GarbageCollection () |
Do any garbage collection that may be required by the object so that it may be finally deleted. More... | |
unsigned | GetSafeReferenceCount () const |
Get count of references to this object. More... | |
![]() | |
__inline unsigned | GetTraceContextIdentifier () const |
Get PTRACE context identifier. More... | |
__inline void | SetTraceContextIdentifier (unsigned id) |
__inline void | SetTraceContextIdentifier (const PObject &obj) |
__inline void | SetTraceContextIdentifier (const PObject *obj) |
__inline void | CopyTraceContextIdentifier (PObject &obj) const |
__inline void | CopyTraceContextIdentifier (PObject *obj) const |
virtual | ~PObject () |
__inline const char * | GetClass () const |
__inline bool | IsClass (const char *name) const |
__inline const PObject * | PTraceObjectInstance () const |
virtual PObject * | Clone () const |
Create a copy of the class on the heap. More... | |
template<class CLS > | |
CLS * | CloneAs () const |
As for Clone() but converts to specified type. More... | |
virtual PINDEX | HashFunction () const |
This function yields a hash value required by the PDictionary class. More... | |
virtual Comparison | Compare (const PObject &obj) const |
Compare the two objects and return their relative rank. More... | |
virtual Comparison | CompareObjectMemoryDirect (const PObject &obj) const |
Determine the byte wise comparison of two objects. More... | |
bool | operator== (const PObject &obj) const |
Compare the two objects. More... | |
bool | operator!= (const PObject &obj) const |
Compare the two objects. More... | |
bool | operator< (const PObject &obj) const |
Compare the two objects. More... | |
bool | operator> (const PObject &obj) const |
Compare the two objects. More... | |
bool | operator<= (const PObject &obj) const |
Compare the two objects. More... | |
bool | operator>= (const PObject &obj) const |
Compare the two objects. More... | |
virtual void | PrintOn (ostream &strm) const |
Output the contents of the object to the stream. More... | |
virtual void | ReadFrom (istream &strm) |
Input the contents of the object from the stream. More... | |
Static Public Member Functions | |
static PMonitoredSockets * | Create (const PString &iface, bool reuseAddr=falseP_NAT_PARAM(PNatMethods *natMethods=NULL)) |
Create a new monitored socket instance based on the interface descriptor. More... | |
![]() | |
static __inline void | CopyTraceContextIdentifier (PObject &to, const PObject &from) |
static __inline void | CopyTraceContextIdentifier (PObject &to, const PObject *from) |
static __inline void | CopyTraceContextIdentifier (PObject *to, const PObject &from) |
static __inline void | CopyTraceContextIdentifier (PObject *to, const PObject *from) |
static __inline const char * | Class () |
static __inline const PObject * | PTraceObjectInstance (const char *) |
static __inline const PObject * | PTraceObjectInstance (const PObject *obj) |
template<typename T > | |
static Comparison | Compare2 (T v1, T v2) |
Compare two types, returning Comparison type. More... | |
static Comparison | InternalCompareObjectMemoryDirect (const PObject *obj1, const PObject *obj2, PINDEX size) |
Internal function caled from CompareObjectMemoryDirect() More... | |
Protected Member Functions | |
PMonitoredSockets (bool reuseAddrP_NAT_PARAM(PNatMethods *natMethods)) | |
bool | CreateSocket (SocketInfo &info, const PIPSocket::Address &binding) |
bool | DestroySocket (SocketInfo &info) |
bool | GetSocketAddress (const SocketInfo &info, PIPSocket::Address &address, WORD &port, bool usingNAT) const |
void | ReadFromSocketList (PSocket::SelectList &readers, PUDPSocket *&socket, BundleParams ¶m) |
![]() | |
PObject () | |
Constructor for PObject, made protected so cannot ever create one on its own. More... | |
Protected Attributes | |
WORD | m_localPort |
bool | m_reuseAddress |
bool | m_opened |
PUDPSocket | m_interfaceAddedSignal |
PIPSocket::QoS | m_qos |
![]() | |
unsigned | m_traceContextIdentifier |
This is a base class for UDP socket(s) that are monitored for interface changes.
Two derived classes are available, one that is permanently bound to an IP address and/or interface name. The second will dynamically open/close ports as interfaces are added and removed from the system.
|
protected |
reuseAddrP_NAT_PARAM | Flag for sharing socket/exclusve use NAT method to use to create sockets. |
|
pure virtual |
Close all socket(s)
Implemented in PSingleMonitoredSocket, and PMonitoredSocketBundle.
|
static |
Create a new monitored socket instance based on the interface descriptor.
This will create a multiple or single socket derived class of PMonitoredSockets depending on the iface parameter.
If the iface parameter starts with a '' or "*%" then a bundle is created for all IP addresses for a specific interface.
If the iface has a non INADDR_ANY address value, with or without a iface qualifier, then only that IP address is listened to.
If the iface resolves to a specific INADDR_ANY or INADDR6_ANY, then only that version will be listened to, on all interfaces or
Finally if empty string or "*", than all IP versions and all interfaces are used.
iface | Interface name to create socket for |
reuseAddr | Re-use or exclusive port number NAT method |
|
protected |
|
protected |
|
pure virtual |
Get the local address for the given interface.
iface | Interface to get address for |
address | Address of interface |
port | Port listening on |
usingNAT | Require NAT address/port |
Implemented in PSingleMonitoredSocket, and PMonitoredSocketBundle.
|
virtual |
Return information about an active interface given the descriptor string.
Note that when searchin the descriptor may be a partial match e.g. "10.0.1.11" or "%eth0" may be used.
iface | Interface desciptor name |
info | Information on the interface |
|
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.
includeLoopBack | Flag for if loopback is to included in list |
destination | Optional destination for selecting specific interface |
Reimplemented in PSingleMonitoredSocket, and PMonitoredSocketBundle.
|
inline |
Return the local port number being used by the socket(s)
References m_localPort.
|
protected |
|
inline |
Indicate if the socket(s) are open and ready for reads/writes.
References m_opened.
|
pure 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.
Implemented in PSingleMonitoredSocket, and PMonitoredSocketBundle.
|
pure 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.
param | Info on data to read |
Implemented in PSingleMonitoredSocket, and PMonitoredSocketBundle.
|
protected |
|
pure virtual |
Set the quality of service for sockets.
Implemented in PSingleMonitoredSocket, and PMonitoredSocketBundle.
|
pure 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.
param | Info on data to write |
Implemented in PSingleMonitoredSocket, and PMonitoredSocketBundle.
|
protected |
|
protected |
Referenced by GetPort().
|
protected |
Referenced by IsOpen().
|
protected |
|
protected |