Line data Source code
1 : /********************************************************************************
2 : * Copyright (c) 2025 Accenture
3 : *
4 : * This program and the accompanying materials are made available under the
5 : * terms of the Apache License Version 2.0 which is available at
6 : * https://www.apache.org/licenses/LICENSE-2.0
7 : *
8 : * SPDX-License-Identifier: Apache-2.0
9 : ********************************************************************************/
10 :
11 : #pragma once
12 :
13 : #include "ip/IPEndpoint.h"
14 :
15 : #include <platform/estdint.h>
16 :
17 : namespace udp
18 : {
19 : /**
20 : * UDP datagram packet.
21 : */
22 : class DatagramPacket
23 : {
24 : public:
25 : // [DatagramPacket]
26 : /**
27 : * Constructs a UDP datagram packet.
28 : * \param data array of data
29 : * \param length length of data
30 : * \param address target IPAddress
31 : * \param port target port
32 : */
33 : DatagramPacket(uint8_t const data[], uint16_t length, ::ip::IPAddress address, uint16_t port);
34 : DatagramPacket(uint8_t const data[], uint16_t length, ::ip::IPEndpoint const& endpoint);
35 : DatagramPacket(DatagramPacket const&) = delete;
36 : DatagramPacket& operator=(DatagramPacket const&) = delete;
37 :
38 76 : uint8_t const* getData() const { return _data; }
39 :
40 76 : uint16_t getLength() const { return _length; }
41 :
42 82 : ::ip::IPEndpoint getEndpoint() const { return _endpoint; }
43 :
44 3 : ::ip::IPAddress getAddress() const { return _endpoint.getAddress(); }
45 :
46 2 : uint16_t getPort() const { return _endpoint.getPort(); }
47 :
48 : bool operator==(DatagramPacket const& other) const;
49 : // [DatagramPacket]
50 : private:
51 : ::ip::IPEndpoint _endpoint;
52 : uint8_t const* _data;
53 : uint16_t _length;
54 : };
55 :
56 : } // namespace udp
|