28#include <dhtnet/ip_utils.h>
30#include <pjsip/sip_msg.h>
33#include <pjsip/sip_endpoint.h>
34#include <pjsip/sip_dialog.h>
39using namespace std::literals;
44namespace SIP_METHODS {
46constexpr std::string_view
INFO =
"INFO"sv;
49constexpr std::string_view
REFER =
"REFER"sv;
70 static constexpr const char* what_ =
"PJSIP call failed";
87template<
typename T, std::
size_t N>
91 return {
const_cast<char*
>(
a), N - 1};
106inline constexpr std::string_view
112static constexpr const char*
149std::string
streamId(
const std::string& callId, std::string_view
label);
177 throw std::bad_alloc();
PJDialogLock(pjsip_dialog *dialog)
PjsipErrorCategory - a PJSIP error category for std::error_code.
std::string message(int condition) const override
const char * name() const noexcept override
PJSIP related exception Based on std::system_error with code() returning std::error_code with PjsipEr...
PjsipFailure(pj_status_t status)
constexpr std::string_view OPTIONS
constexpr std::string_view INFO
constexpr std::string_view MESSAGE
constexpr std::string_view PUBLISH
constexpr std::string_view REFER
constexpr std::string_view NOTIFY
static constexpr int DEFAULT_SIP_TLS_PORT
static constexpr int DEFAULT_SIP_PORT
std::string fetchHeaderValue(pjsip_msg *msg, const std::string &field)
Helper function to parser header from incoming sip messages.
void logMessageHeaders(const pjsip_hdr *hdr_list)
void addUserAgentHeader(const std::string &userAgent, pjsip_tx_data *tdata)
void addContactHeader(const std::string &contactHdr, pjsip_tx_data *tdata)
std::string_view stripSipUriPrefix(std::string_view sipUri)
std::string_view getHostFromUri(std::string_view uri)
static std::unique_ptr< pj_pool_t, decltype(pj_pool_release)& > smart_alloc_pool(pjsip_endpoint *endpt, const char *const name, pj_size_t initial, pj_size_t inc)
pjsip_route_hdr * createRouteSet(const std::string &route, pj_pool_t *hdr_pool)
std::string sip_strerror(pj_status_t code)
static constexpr int POOL_TP_INIT
constexpr std::string_view as_view(const pj_str_t &str) noexcept
std::string_view getPeerUserAgent(const pjsip_rx_data *rdata)
std::vector< std::string > getPeerAllowMethods(const pjsip_rx_data *rdata)
std::string parseDisplayName(const pjsip_name_addr *sip_name_addr)
static constexpr int TRANSPORT_INFO_LENGTH
static constexpr int POOL_TP_INC
std::string streamId(const std::string &callId, std::string_view label)
void sockaddr_to_host_port(pj_pool_t *pool, pjsip_host_port *host_port, const pj_sockaddr *addr)
static KeyExchangeProtocol getKeyExchangeProtocol(std::string_view name)
static constexpr int DEFAULT_AUTO_SELECT_PORT
constexpr std::string_view DEFAULT_VIDEO_STREAMID
constexpr std::string_view DEFAULT_AUDIO_STREAMID
constexpr const pj_str_t CONST_PJ_STR(T(&a)[N]) noexcept
static constexpr const char * getKeyExchangeName(KeyExchangeProtocol kx)
void emitSignal(Args... args)
const std::string & userAgent()
Simple macro to hide class' copy constructor and assignment operator.
#define NON_COPYABLE(ClassName)