Line data Source code
1 : // Copyright 2025 Accenture. 2 : 3 : #pragma once 4 : 5 : #include "ip/IPEndpoint.h" 6 : 7 : #include <platform/estdint.h> 8 : 9 : namespace udp 10 : { 11 : /** 12 : * UDP datagram packet. 13 : */ 14 : class DatagramPacket 15 : { 16 : public: 17 : // [DatagramPacket] 18 : /** 19 : * Constructs a UDP datagram packet. 20 : * \param data array of data 21 : * \param length length of data 22 : * \param address target IPAddress 23 : * \param port target port 24 : */ 25 : DatagramPacket(uint8_t const data[], uint16_t length, ::ip::IPAddress address, uint16_t port); 26 : DatagramPacket(uint8_t const data[], uint16_t length, ::ip::IPEndpoint const& endpoint); 27 : DatagramPacket(DatagramPacket const&) = delete; 28 : DatagramPacket& operator=(DatagramPacket const&) = delete; 29 : 30 1 : uint8_t const* getData() const { return _data; } 31 : 32 1 : uint16_t getLength() const { return _length; } 33 : 34 1 : ::ip::IPEndpoint getEndpoint() const { return _endpoint; } 35 : 36 2 : ::ip::IPAddress getAddress() const { return _endpoint.getAddress(); } 37 : 38 2 : uint16_t getPort() const { return _endpoint.getPort(); } 39 : 40 : bool operator==(DatagramPacket const& other) const; 41 : // [DatagramPacket] 42 : private: 43 : ::ip::IPEndpoint _endpoint; 44 : uint8_t const* _data; 45 : uint16_t _length; 46 : }; 47 : 48 : } // namespace udp