Base Framework
Public Types | Public Member Functions | Static Public Attributes | List of all members
MultipleSockets Class Reference

Socket I/O multiplexer. More...

#include <base/net/MultipleSockets.h>

Inherits Object.

Public Types

enum  {
  INPUT = 1, PRIORITY_INPUT = 2, HIGH_PRIORITY_INPUT = 4, OUTPUT = 8,
  PRIORITY_OUTPUT = 16, ERROR = 32, DISCONNECTED = 64
}
 

Public Member Functions

 MultipleSockets ()
 
unsigned int getSelected () const noexcept
 
void add (StreamSocket socket, unsigned int events=INPUT|PRIORITY_INPUT|HIGH_PRIORITY_INPUT|OUTPUT|PRIORITY_OUTPUT)
 
void remove (StreamSocket socket)
 
unsigned int getEvents (StreamSocket socket)
 
unsigned int getFilter (StreamSocket socket) const
 
void setFilter (StreamSocket socket, unsigned int events)
 
unsigned int poll ()
 
unsigned int poll (unsigned int milliseconds)
 
void signal (SocketListener *listener)
 
 ~MultipleSockets () noexcept
 

Static Public Attributes

static const unsigned int GRANULARITY = 64
 

Detailed Description

Socket I/O multiplexer.

Socket I/O multiplexer.

Version
1.0

Member Enumeration Documentation

◆ anonymous enum

anonymous enum

Events.

Enumerator
INPUT 

Normal data may be read without blocking.

PRIORITY_INPUT 

Priority data may be read without blocking.

HIGH_PRIORITY_INPUT 

High priority data may be read without blocking.

OUTPUT 

Data may be written without blocking.

PRIORITY_OUTPUT 

Priority data may be written without blocking.

ERROR 

Error condition.

DISCONNECTED 

The connection has been disconnected.

Constructor & Destructor Documentation

◆ MultipleSockets()

MultipleSockets::MultipleSockets ( )

Initializes multiple socket object.

◆ ~MultipleSockets()

MultipleSockets::~MultipleSockets ( )
noexcept

Destroys the object.

Member Function Documentation

◆ add()

void MultipleSockets::add ( StreamSocket  socket,
unsigned int  events = INPUT|PRIORITY_INPUT|HIGH_PRIORITY_INPUT|OUTPUT|PRIORITY_OUTPUT 
)

Adds a socket with the specified events filter (only INPUT, PRIORITY_INPUT, HIGH_PRIORITY_INPUT, OUTPUT, and PRIORITY_OUTPUT are significant).

Parameters
socketThe socket to be added.
eventsThe filter events. The default is all events.

◆ getEvents()

unsigned int MultipleSockets::getEvents ( StreamSocket  socket)

Returns the events for the specified socket. Raises InvalidKey if socket is invalid. The socket is deselected if present within the selected socket set.

◆ getFilter()

unsigned int MultipleSockets::getFilter ( StreamSocket  socket) const

Returns the currently filtered events (mask of INPUT, PRIORITY_INPUT, HIGH_PRIORITY_INPUT, OUTPUT, and PRIORITY_OUTPUT).

◆ getSelected()

unsigned int MultipleSockets::getSelected ( ) const
inlinenoexcept

Returns the current number of selected sockets.

◆ poll() [1/2]

unsigned int MultipleSockets::poll ( )

Waits for an event on one of the sockets.

Returns
The number of sockets which have changed.

◆ poll() [2/2]

unsigned int MultipleSockets::poll ( unsigned int  milliseconds)

Waits for an event on one of the sockets. The time out period is silently clamped to 999999999.

Parameters
millisecondsThe time out period.
Returns
The number of sockets which have changed. 0 if interrrupted or timed out.

◆ remove()

void MultipleSockets::remove ( StreamSocket  socket)

Removes a socket.

Parameters
socketThe socket to be removed.

◆ setFilter()

void MultipleSockets::setFilter ( StreamSocket  socket,
unsigned int  events 
)

Sets the events filter (only INPUT, PRIORITY_INPUT, HIGH_PRIORITY_INPUT, OUTPUT, and PRIORITY_OUTPUT are significant).

◆ signal()

void MultipleSockets::signal ( SocketListener listener)

Signals the listener for each selected socket. Resets the number of selected sockets.

Member Data Documentation

◆ GRANULARITY

const unsigned int MultipleSockets::GRANULARITY = 64
static

The granularity.