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 76 : uint8_t const* getData() const { return _data; }
31 :
32 76 : uint16_t getLength() const { return _length; }
33 :
34 82 : ::ip::IPEndpoint getEndpoint() const { return _endpoint; }
35 :
36 3 : ::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
|