| 29 | |
| 30 | |
| 31 | UDPSocket::UDPSocket(const SocketManager& manager, bool allowBroadcast) : _socket(manager,Socket::DATAGRAM), _allowBroadcast(allowBroadcast) { |
| 32 | |
| 33 | onReadable = [this](Exception& ex,UInt32 available) { |
| 34 | if(available==0) |
| 35 | return; |
| 36 | |
| 37 | PoolBuffer pBuffer(_socket.manager().poolBuffers,available); |
| 38 | SocketAddress address; |
| 39 | int size = _socket.receiveFrom(ex,pBuffer->data(), available, address); |
| 40 | if (ex || size <= 0) |
| 41 | return; |
| 42 | pBuffer->resize(size, true); |
| 43 | |
| 44 | OnPacket::raise(pBuffer,address); |
| 45 | }; |
| 46 | _socket.OnError::subscribe(*this); |
| 47 | _socket.OnReadable::subscribe(onReadable); |
| 48 | } |
| 49 | |
| 50 | UDPSocket::~UDPSocket() { |
| 51 | _socket.OnReadable::unsubscribe(onReadable); |
nothing calls this directly
no test coverage detected