PInterfaceMonitor Class Reference

#include <psockbun.h>

Inheritance diagram for PInterfaceMonitor:

PObject List of all members.

Public Types

enum  { DefaultRefreshInterval = 5000 }
typedef PIPSocket::InterfaceEntry InterfaceEntry

Public Member Functions

 PInterfaceMonitor (unsigned refreshInterval=DefaultRefreshInterval, BOOL runMonitorThread=TRUE)
virtual ~PInterfaceMonitor ()
BOOL Start ()
 Start monitoring network interfaces.
void Stop ()
 Stop monitoring network interfaces.
PStringArray GetInterfaces (BOOL includeLoopBack=FALSE, const PIPSocket::Address &destination=PIPSocket::GetDefaultIpAny())
BOOL IsValidBindingForDestination (const PIPSocket::Address &binding, const PIPSocket::Address &destination)
BOOL GetInterfaceInfo (const PString &iface, InterfaceEntry &info)
void SetInterfaceFilter (PInterfaceFilter *filter)
virtual void RefreshInterfaceList ()

Static Public Member Functions

static PInterfaceMonitorGetInstance ()
 Return the singleton interface for the network monitor.

Protected Types

typedef PSmartPtr< PInterfaceMonitorClientClientPtr
typedef std::list< PInterfaceMonitorClient * > ClientList_T

Protected Member Functions

void UpdateThreadMain ()
void AddClient (PInterfaceMonitorClient *)
void RemoveClient (PInterfaceMonitorClient *)
virtual void OnAddInterface (const InterfaceEntry &entry)
virtual void OnRemoveInterface (const InterfaceEntry &entry)

Protected Attributes

ClientList_T currentClients
PIPSocket::InterfaceTable currentInterfaces
BOOL runMonitorThread
PTimeInterval refreshInterval
PMutex mutex
PThreadupdateThread
PSyncPoint threadRunning
PInterfaceFilterinterfaceFilter

Friends

class PInterfaceMonitorClient

Detailed Description

This class is a singleton that will monitor the network interfaces on a machine and update a list aof clients on any changes to the number or addresses of the interfaces.

A user may override this singleton by creating a derived class and making a static instance of it before any monitor client classes are created. This would typically be done in the users main program.


Member Typedef Documentation

typedef PIPSocket::InterfaceEntry PInterfaceMonitor::InterfaceEntry

typedef PSmartPtr<PInterfaceMonitorClient> PInterfaceMonitor::ClientPtr [protected]

typedef std::list<PInterfaceMonitorClient *> PInterfaceMonitor::ClientList_T [protected]


Member Enumeration Documentation

anonymous enum

Enumerator:
DefaultRefreshInterval 


Constructor & Destructor Documentation

PInterfaceMonitor::PInterfaceMonitor ( unsigned  refreshInterval = DefaultRefreshInterval,
BOOL  runMonitorThread = TRUE 
)

virtual PInterfaceMonitor::~PInterfaceMonitor (  )  [virtual]


Member Function Documentation

static PInterfaceMonitor& PInterfaceMonitor::GetInstance (  )  [static]

Return the singleton interface for the network monitor.

BOOL PInterfaceMonitor::Start (  ) 

Start monitoring network interfaces.

void PInterfaceMonitor::Stop (  ) 

Stop monitoring network interfaces.

PStringArray PInterfaceMonitor::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. Note the names are of the form ipname, eg "10.0.1.11%3Com 3C90x Ethernet Adapter" or "192.168.0.10%eth0"

Parameters:
destination  Flag for if loopback is to included in list

BOOL PInterfaceMonitor::IsValidBindingForDestination ( const PIPSocket::Address binding,
const PIPSocket::Address destination 
)

Returns whether destination is reachable through binding or not. The default behaviour returns TRUE unless there is an interface filter installed an the filter does not return 'binding' among it's interfaces.

BOOL PInterfaceMonitor::GetInterfaceInfo ( const PString iface,
InterfaceEntry info 
)

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.

Parameters:
info  Interface desciptor name Information on the interface

void PInterfaceMonitor::SetInterfaceFilter ( PInterfaceFilter filter  ) 

Sets the monitor's interface filter. Note that the monitor instance handles deletion of the filter.

virtual void PInterfaceMonitor::RefreshInterfaceList (  )  [virtual]

void PInterfaceMonitor::UpdateThreadMain (  )  [protected]

void PInterfaceMonitor::AddClient ( PInterfaceMonitorClient  )  [protected]

void PInterfaceMonitor::RemoveClient ( PInterfaceMonitorClient  )  [protected]

virtual void PInterfaceMonitor::OnAddInterface ( const InterfaceEntry entry  )  [protected, virtual]

virtual void PInterfaceMonitor::OnRemoveInterface ( const InterfaceEntry entry  )  [protected, virtual]


Friends And Related Function Documentation

friend class PInterfaceMonitorClient [friend]


Member Data Documentation

ClientList_T PInterfaceMonitor::currentClients [protected]

PIPSocket::InterfaceTable PInterfaceMonitor::currentInterfaces [protected]

BOOL PInterfaceMonitor::runMonitorThread [protected]

PTimeInterval PInterfaceMonitor::refreshInterval [protected]

PMutex PInterfaceMonitor::mutex [protected]

PThread* PInterfaceMonitor::updateThread [protected]

PSyncPoint PInterfaceMonitor::threadRunning [protected]

PInterfaceFilter* PInterfaceMonitor::interfaceFilter [protected]


The documentation for this class was generated from the following file:
Generated on Fri Mar 7 06:25:06 2008 for PTLib by  doxygen 1.5.1