27 #ifndef NIDAS_CORE_MULTIPLESOCKETUDP_H
28 #define NIDAS_CORE_MULTIPLESOCKETUDP_H
35 namespace nidas {
namespace core {
53 size_t read(
void*,
size_t) throw(nidas::util::IOException)
59 size_t write(
const void* buf,
size_t len)
62 size_t write(
const struct iovec* iov,
int iovcnt)
65 void close() throw(nidas::util::IOException);
70 throw(nidas::util::InvalidParameterException);
84 void removeClient(const nidas::util::Inet4SocketAddress& remoteSAddr);
104 std::list<std::pair<nidas::util::DatagramSocket*,nidas::util::Inet4SocketAddress> >
_sockets;
106 std::list<std::pair<nidas::util::DatagramSocket*,nidas::util::Inet4SocketAddress> >
_pendingSockets;
113 std::map<nidas::util::Inet4SocketAddress,nidas::util::Inet4Address>
119 std::map<nidas::util::Inet4Address,std::set<nidas::util::Inet4SocketAddress> >
125 std::map<nidas::util::Inet4Address,nidas::util::DatagramSocket*>
131 std::map<nidas::util::Inet4SocketAddress,nidas::util::DatagramSocket*>
Implementation of an IOChannel, using nidas::util::McSocket<nidas::util::DatagramSocket> to establish...
Definition: McSocketUDP.h:46
void connected(nidas::util::DatagramSocket *sock, const nidas::util::Inet4PacketInfoX &pktinfo)
Definition: MultipleUDPSockets.cc:82
size_t getBufferSize() const
Return suggested buffer length.
Definition: MultipleUDPSockets.cc:257
void fromDOMElement(const xercesc::DOMElement *)
Initialize myself from a xercesc::DOMElement.
Definition: MultipleUDPSockets.cc:367
A socket for sending or receiving datagrams, either unicast, broadcast or multicast.
Definition: Socket.h:912
std::map< nidas::util::Inet4Address, nidas::util::DatagramSocket * > _multicastSockets
Socket of each multicast interface.
Definition: MultipleUDPSockets.h:126
void close()
Definition: MultipleUDPSockets.cc:341
bool _socketsChanged
Definition: MultipleUDPSockets.h:134
void addClient(const ConnectionInfo &info)
From the Inet4PacketInfoX associated with the received request, determine if we need to create a new ...
Definition: MultipleUDPSockets.cc:99
Extra information associated with an IOChannel concerning the connection.
Definition: ConnectionInfo.h:38
Definition: Inet4PacketInfo.h:92
MultipleUDPSockets * clone() const
Derived classes must provide clone.
Definition: MultipleUDPSockets.cc:59
std::list< std::pair< nidas::util::DatagramSocket *, nidas::util::Inet4SocketAddress > > _pendingSockets
Definition: MultipleUDPSockets.h:106
std::list< nidas::util::DatagramSocket * > _pendingRemoveSockets
Definition: MultipleUDPSockets.h:108
size_t write(const void *buf, size_t len)
A McSocketUDP shouldn't be used to do any actual reads or writes, it just sets up the connection...
Definition: MultipleUDPSockets.cc:297
A channel for Input or Output of data.
Definition: IOChannel.h:64
Definition: MultipleUDPSockets.h:37
size_t read(void *, size_t)
A McSocketUDP shouldn't be used to do any actual reads or writes, it just sets up the connection...
Definition: MultipleUDPSockets.h:53
Implementation of an IOChannel, over a DatagramSocket.
Definition: DatagramSocket.h:44
int getFd() const
Definition: MultipleUDPSockets.cc:357
nidas::util::Mutex _socketMutex
Definition: MultipleUDPSockets.h:102
unsigned short _dataPortNumber
Definition: MultipleUDPSockets.h:136
std::list< std::pair< nidas::util::DatagramSocket *, nidas::util::Inet4SocketAddress > > _sockets
Definition: MultipleUDPSockets.h:104
int len
Definition: sing.cc:934
void removeClient(const nidas::util::Inet4SocketAddress &remoteSAddr)
Definition: MultipleUDPSockets.cc:168
Definition: IOException.h:37
void setDataPort(unsigned short val)
Definition: MultipleUDPSockets.h:88
std::map< nidas::util::Inet4SocketAddress, nidas::util::DatagramSocket * > _unicastSockets
Unicast Sockets for each destination.
Definition: MultipleUDPSockets.h:132
void handleChangedSockets()
Definition: MultipleUDPSockets.cc:272
IOChannel * connect()
Establish a connection.
Definition: MultipleUDPSockets.cc:64
unsigned short getDataPort() const
Definition: MultipleUDPSockets.h:93
A C++ wrapper for a POSIX mutex.
Definition: ThreadSupport.h:154
MultipleUDPSockets()
Definition: MultipleUDPSockets.cc:36
std::map< nidas::util::Inet4SocketAddress, nidas::util::Inet4Address > _multicastInterfaces
The local multicast interface of each remote client.
Definition: MultipleUDPSockets.h:114
std::map< nidas::util::Inet4Address, std::set< nidas::util::Inet4SocketAddress > > _multicastClients
Remote clients of each multicast interface.
Definition: MultipleUDPSockets.h:120