Line data Source code
1 : /*
2 : * Copyright (C) 2004-2026 Savoir-faire Linux Inc.
3 : *
4 : * This program is free software: you can redistribute it and/or modify
5 : * it under the terms of the GNU General Public License as published by
6 : * the Free Software Foundation, either version 3 of the License, or
7 : * (at your option) any later version.
8 : *
9 : * This program is distributed in the hope that it will be useful,
10 : * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 : * GNU General Public License for more details.
13 : *
14 : * You should have received a copy of the GNU General Public License
15 : * along with this program. If not, see <https://www.gnu.org/licenses/>.
16 : */
17 : #pragma once
18 :
19 : #include <dhtnet/ip_utils.h>
20 : #include "connectivity/sip_utils.h"
21 :
22 : #include <pjsip.h>
23 : #include <pj/pool.h>
24 :
25 : namespace jami {
26 :
27 : namespace tls {
28 :
29 : /**
30 : * AbstractSIPTransport
31 : *
32 : * Implements a pjsip_transport on top
33 : */
34 : class AbstractSIPTransport
35 : {
36 : public:
37 : struct TransportData
38 : {
39 : pjsip_transport base; // do not move, SHOULD be the fist member
40 : AbstractSIPTransport* self {nullptr};
41 : };
42 : static_assert(std::is_standard_layout<TransportData>::value, "TransportData requires standard-layout");
43 :
44 174 : virtual ~AbstractSIPTransport() {};
45 :
46 : virtual pjsip_transport* getTransportBase() = 0;
47 :
48 : virtual dhtnet::IpAddr getLocalAddress() const = 0;
49 : };
50 :
51 : } // namespace tls
52 : } // namespace jami
|