mirror of
https://github.com/ZLMediaKit/ZLMediaKit.git
synced 2026-06-16 13:05:59 +08:00
srt optimization code for query poller (#3334)
- add querySrtTransport, improve code. - update SrtTransportManager key - fix some warning
This commit is contained in:
@@ -61,7 +61,7 @@ void SrtTransport::switchToOtherTransport(uint8_t *buf, int len, uint32_t socket
|
||||
BufferRaw::Ptr tmp = BufferRaw::create();
|
||||
struct sockaddr_storage tmp_addr = *addr;
|
||||
tmp->assign((char *)buf, len);
|
||||
auto trans = SrtTransportManager::Instance().getItem(std::to_string(socketid));
|
||||
auto trans = SrtTransportManager::Instance().getItem(socketid);
|
||||
if (trans) {
|
||||
trans->getPoller()->async([tmp, tmp_addr, trans] {
|
||||
trans->inputSockData((uint8_t *)tmp->data(), tmp->size(), (struct sockaddr_storage *)&tmp_addr);
|
||||
@@ -700,30 +700,30 @@ void SrtTransport::sendPacket(Buffer::Ptr pkt, bool flush) {
|
||||
}
|
||||
}
|
||||
|
||||
std::string SrtTransport::getIdentifier() {
|
||||
std::string SrtTransport::getIdentifier() const {
|
||||
return _selected_session ? _selected_session->getIdentifier() : "";
|
||||
}
|
||||
|
||||
void SrtTransport::registerSelfHandshake() {
|
||||
SrtTransportManager::Instance().addHandshakeItem(std::to_string(_sync_cookie), shared_from_this());
|
||||
SrtTransportManager::Instance().addHandshakeItem(_sync_cookie, shared_from_this());
|
||||
}
|
||||
|
||||
void SrtTransport::unregisterSelfHandshake() {
|
||||
if (_sync_cookie == 0) {
|
||||
return;
|
||||
}
|
||||
SrtTransportManager::Instance().removeHandshakeItem(std::to_string(_sync_cookie));
|
||||
SrtTransportManager::Instance().removeHandshakeItem(_sync_cookie);
|
||||
}
|
||||
|
||||
void SrtTransport::registerSelf() {
|
||||
if (_socket_id == 0) {
|
||||
return;
|
||||
}
|
||||
SrtTransportManager::Instance().addItem(std::to_string(_socket_id), shared_from_this());
|
||||
SrtTransportManager::Instance().addItem(_socket_id, shared_from_this());
|
||||
}
|
||||
|
||||
void SrtTransport::unregisterSelf() {
|
||||
SrtTransportManager::Instance().removeItem(std::to_string(_socket_id));
|
||||
SrtTransportManager::Instance().removeItem(_socket_id);
|
||||
}
|
||||
|
||||
void SrtTransport::onShutdown(const SockException &ex) {
|
||||
@@ -739,7 +739,7 @@ void SrtTransport::onShutdown(const SockException &ex) {
|
||||
}
|
||||
}
|
||||
|
||||
size_t SrtTransport::getPayloadSize() {
|
||||
size_t SrtTransport::getPayloadSize() const {
|
||||
size_t ret = (_mtu - 28 - 16) / 188 * 188;
|
||||
return ret;
|
||||
}
|
||||
@@ -792,15 +792,13 @@ SrtTransportManager &SrtTransportManager::Instance() {
|
||||
return s_instance;
|
||||
}
|
||||
|
||||
void SrtTransportManager::addItem(const std::string &key, const SrtTransport::Ptr &ptr) {
|
||||
void SrtTransportManager::addItem(const uint32_t key, const SrtTransport::Ptr &ptr) {
|
||||
std::lock_guard<std::mutex> lck(_mtx);
|
||||
_map[key] = ptr;
|
||||
}
|
||||
|
||||
SrtTransport::Ptr SrtTransportManager::getItem(const std::string &key) {
|
||||
if (key.empty()) {
|
||||
return nullptr;
|
||||
}
|
||||
SrtTransport::Ptr SrtTransportManager::getItem(const uint32_t key) {
|
||||
assert(key > 0);
|
||||
std::lock_guard<std::mutex> lck(_mtx);
|
||||
auto it = _map.find(key);
|
||||
if (it == _map.end()) {
|
||||
@@ -809,25 +807,23 @@ SrtTransport::Ptr SrtTransportManager::getItem(const std::string &key) {
|
||||
return it->second.lock();
|
||||
}
|
||||
|
||||
void SrtTransportManager::removeItem(const std::string &key) {
|
||||
void SrtTransportManager::removeItem(const uint32_t key) {
|
||||
std::lock_guard<std::mutex> lck(_mtx);
|
||||
_map.erase(key);
|
||||
}
|
||||
|
||||
void SrtTransportManager::addHandshakeItem(const std::string &key, const SrtTransport::Ptr &ptr) {
|
||||
void SrtTransportManager::addHandshakeItem(const uint32_t key, const SrtTransport::Ptr &ptr) {
|
||||
std::lock_guard<std::mutex> lck(_handshake_mtx);
|
||||
_handshake_map[key] = ptr;
|
||||
}
|
||||
|
||||
void SrtTransportManager::removeHandshakeItem(const std::string &key) {
|
||||
void SrtTransportManager::removeHandshakeItem(const uint32_t key) {
|
||||
std::lock_guard<std::mutex> lck(_handshake_mtx);
|
||||
_handshake_map.erase(key);
|
||||
}
|
||||
|
||||
SrtTransport::Ptr SrtTransportManager::getHandshakeItem(const std::string &key) {
|
||||
if (key.empty()) {
|
||||
return nullptr;
|
||||
}
|
||||
SrtTransport::Ptr SrtTransportManager::getHandshakeItem(const uint32_t key) {
|
||||
assert(key > 0);
|
||||
std::lock_guard<std::mutex> lck(_handshake_mtx);
|
||||
auto it = _handshake_map.find(key);
|
||||
if (it == _handshake_map.end()) {
|
||||
|
||||
Reference in New Issue
Block a user