multiplex: clean up functions that went in the wrong design direction

This commit is contained in:
Heikki Tampio 2023-04-05 10:55:24 +03:00
parent e6064f8e9f
commit fab904a39a
6 changed files with 36 additions and 72 deletions

View File

@ -51,7 +51,7 @@ namespace uvgrtp {
public:
/// \cond DO_NOT_DOCUMENT
media_stream(std::string cname, std::string remote_addr, std::string local_addr, uint16_t src_port, uint16_t dst_port,
rtp_format_t fmt, int rce_flags, bool single_soc, std::shared_ptr<uvgrtp::socket> socptr);
rtp_format_t fmt, int rce_flags);
~media_stream();
/* Initialize traditional RTP session
@ -330,7 +330,6 @@ namespace uvgrtp {
* Used by session to index media streams */
uint32_t get_key() const;
bool is_single_socket() const;
/// \endcond
/**
@ -395,8 +394,6 @@ namespace uvgrtp {
bool ipv6_;
rtp_format_t fmt_;
bool single_soc_;
/* Media context config */
int rce_flags_ = 0;

View File

@ -69,17 +69,6 @@ uvgrtp::session *uvgrtp::context::create_session(std::string address)
return new uvgrtp::session(get_cname(), address);
}
uvgrtp::session *uvgrtp::context::create_session(std::string remote_addr, std::string local_addr)
{
if (remote_addr == "" && local_addr == "")
{
UVG_LOG_ERROR("Please specify at least one address for create_session");
return nullptr;
}
return new uvgrtp::session(get_cname(), remote_addr, local_addr);
}
uvgrtp::session* uvgrtp::context::create_session(std::string remote_addr, std::string local_addr)
{
if (remote_addr == "" && local_addr == "")

View File

@ -31,11 +31,11 @@
uvgrtp::media_stream::media_stream(std::string cname, std::string remote_addr,
std::string local_addr, uint16_t src_port, uint16_t dst_port, rtp_format_t fmt,
int rce_flags, bool single_soc, std::shared_ptr<uvgrtp::socket> socptr) :
int rce_flags) :
key_(uvgrtp::random::generate_32()),
srtp_(nullptr),
srtcp_(nullptr),
socket_(socptr),
socket_(nullptr),
rtp_(nullptr),
rtcp_(nullptr),
remote_sockaddr_(),
@ -46,7 +46,6 @@ uvgrtp::media_stream::media_stream(std::string cname, std::string remote_addr,
dst_port_(dst_port),
ipv6_(false),
fmt_(fmt),
single_soc_(single_soc),
rce_flags_(rce_flags),
initialized_(false),
rtp_handler_key_(0),
@ -83,41 +82,41 @@ rtp_error_t uvgrtp::media_stream::init_connection()
{
rtp_error_t ret = RTP_GENERIC_ERROR;
if (!single_soc_) {
// Use getaddrinfo() to determine whether we are using ipv4 or ipv6 addresses
struct addrinfo hint, * res = NULL;
memset(&hint, '\0', sizeof(hint));
hint.ai_family = PF_UNSPEC;
hint.ai_flags = AI_NUMERICHOST;
if (getaddrinfo(local_address_.c_str(), NULL, &hint, &res) != 0) {
if (getaddrinfo(remote_address_.c_str(), NULL, &hint, &res) != 0) {
UVG_LOG_ERROR("Invalid IP address");
return RTP_GENERIC_ERROR;
}
}
if (res->ai_family == AF_INET6) {
ipv6_ = true;
UVG_LOG_DEBUG("Using an IPv6 address");
}
else {
UVG_LOG_DEBUG("Using an IPv4 address");
}
// Use getaddrinfo() to determine whether we are using ipv4 or ipv6 addresses
struct addrinfo hint, * res = NULL;
memset(&hint, '\0', sizeof(hint));
hint.ai_family = PF_UNSPEC;
hint.ai_flags = AI_NUMERICHOST;
// Initialize socket
if ((ret = socket_->init(res->ai_family, SOCK_DGRAM, 0)) != RTP_OK) {
return ret;
if (getaddrinfo(local_address_.c_str(), NULL, &hint, &res) != 0) {
if (getaddrinfo(remote_address_.c_str(), NULL, &hint, &res) != 0) {
UVG_LOG_ERROR("Invalid IP address");
return RTP_GENERIC_ERROR;
}
}
if (res->ai_family == AF_INET6) {
ipv6_ = true;
UVG_LOG_DEBUG("Using an IPv6 address");
}
else {
UVG_LOG_DEBUG("Using an IPv4 address");
}
// Initialize socket
if ((ret = socket_->init(res->ai_family, SOCK_DGRAM, 0)) != RTP_OK) {
return ret;
}
#ifdef _WIN32
/* Make the socket non-blocking */
int enabled = 1;
/* Make the socket non-blocking */
int enabled = 1;
if (::ioctlsocket(socket_->get_raw_socket(), FIONBIO, (u_long*)&enabled) < 0)
UVG_LOG_ERROR("Failed to make the socket non-blocking!");
if (::ioctlsocket(socket_->get_raw_socket(), FIONBIO, (u_long*)&enabled) < 0)
UVG_LOG_ERROR("Failed to make the socket non-blocking!");
#endif
}
if (!(rce_flags_ & RCE_RECEIVE_ONLY) && remote_address_ != "" && dst_port_ != 0)
{
// no reason to fail sending even if binding fails so we set remote address first
@ -135,10 +134,7 @@ rtp_error_t uvgrtp::media_stream::init_connection()
UVG_LOG_INFO("Sending disabled for this stream");
}
if (single_soc_) {
UVG_LOG_INFO("Using a single socket for receiving");
}
else if (!(rce_flags_ & RCE_SEND_ONLY))
if (!(rce_flags_ & RCE_SEND_ONLY))
{
if (local_address_ != "" && src_port_ != 0) {
if (ipv6_) {
@ -796,11 +792,6 @@ uint32_t uvgrtp::media_stream::get_key() const
return key_;
}
bool uvgrtp::media_stream::is_single_socket() const
{
return single_soc_;
}
uvgrtp::rtcp *uvgrtp::media_stream::get_rtcp()
{
return rtcp_.get();

View File

@ -103,15 +103,9 @@ uvgrtp::media_stream* uvgrtp::session::create_stream(uint16_t src_port, uint16_t
rtp_errno = RTP_INVALID_VALUE;
return nullptr;
}
if (!(rce_flags & RCE_SEND_ONLY)) {
if (!sf_->get_local_bound()) {
sf_->bind_local_socket(src_port);
}
}
std::shared_ptr<uvgrtp::socket> soc = sf_->get_socket_ptr();
uvgrtp::media_stream* stream =
new uvgrtp::media_stream(cname_, remote_address_, local_address_, src_port, dst_port, fmt, rce_flags, sf_->get_local_bound(), soc);
new uvgrtp::media_stream(cname_, remote_address_, local_address_, src_port, dst_port, fmt, rce_flags);
if (rce_flags & RCE_SRTP) {
if (!uvgrtp::crypto::enabled()) {

View File

@ -15,8 +15,7 @@ uvgrtp::socketfactory::socketfactory(int rce_flags) :
local_address_(""),
used_ports_({}),
ipv6_(false),
used_sockets_({}),
local_bound_(false)
used_sockets_({})
{}
uvgrtp::socketfactory::~socketfactory()
@ -24,7 +23,7 @@ uvgrtp::socketfactory::~socketfactory()
rtp_error_t uvgrtp::socketfactory::set_local_interface(std::string local_addr)
{
rtp_error_t ret = RTP_GENERIC_ERROR;
rtp_error_t ret;
local_address_ = local_addr;
// check IP address family
@ -47,7 +46,7 @@ std::shared_ptr<uvgrtp::socket> uvgrtp::socketfactory::create_new_socket(uint16_
{
rtp_error_t ret = RTP_OK;
if (std::find(used_ports_.begin(), used_ports_.end(), local_port) == used_ports_.end()) {
std::shared_ptr<uvgrtp::socket> socket = std::make_shared<uvgrtp::socket>(new uvgrtp::socket(rce_flags_));
std::shared_ptr<uvgrtp::socket> socket = std::make_shared<uvgrtp::socket>(rce_flags_);
if (ipv6_) {
if ((ret = socket->init(AF_INET6, SOCK_DGRAM, 0)) != RTP_OK) {
@ -87,12 +86,8 @@ std::shared_ptr<uvgrtp::socket> uvgrtp::socketfactory::create_new_socket(uint16_
return nullptr;
}
bool uvgrtp::socketfactory::get_local_bound() const
{
return local_bound_;
}
std::shared_ptr<uvgrtp::socket> uvgrtp::socketfactory::get_socket_ptr() const
{
return socket_;
return nullptr;
}

View File

@ -17,7 +17,6 @@ namespace uvgrtp {
rtp_error_t set_local_interface(std::string local_addr);
std::shared_ptr<uvgrtp::socket> create_new_socket(uint16_t local_port);
bool get_local_bound() const;
std::shared_ptr<uvgrtp::socket> get_socket_ptr() const;
private:
@ -27,7 +26,6 @@ namespace uvgrtp {
std::vector<uint16_t> used_ports_;
bool ipv6_;
std::vector<std::shared_ptr<uvgrtp::socket>> used_sockets_;
bool local_bound_;
};
}