Porting the changes done to UE5 to fix the recording leak to UE4
The slowdown is considerably more noticeable here since the engine runs much smoother. This makes evident that this is a stopgap measure, and should be looked into further down the line.
This commit is contained in:
parent
9e94feb3a5
commit
4d09f0a660
|
@ -15,7 +15,6 @@
|
||||||
#include <boost/asio/connect.hpp>
|
#include <boost/asio/connect.hpp>
|
||||||
#include <boost/asio/read.hpp>
|
#include <boost/asio/read.hpp>
|
||||||
#include <boost/asio/write.hpp>
|
#include <boost/asio/write.hpp>
|
||||||
#include <boost/asio/post.hpp>
|
|
||||||
#include <boost/asio/bind_executor.hpp>
|
#include <boost/asio/bind_executor.hpp>
|
||||||
|
|
||||||
#include <exception>
|
#include <exception>
|
||||||
|
@ -86,7 +85,6 @@ namespace tcp {
|
||||||
|
|
||||||
void Client::Connect() {
|
void Client::Connect() {
|
||||||
auto self = shared_from_this();
|
auto self = shared_from_this();
|
||||||
boost::asio::post(_strand, [this, self]() {
|
|
||||||
if (_done) {
|
if (_done) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -139,18 +137,15 @@ namespace tcp {
|
||||||
|
|
||||||
log_debug("streaming client: connecting to", ep);
|
log_debug("streaming client: connecting to", ep);
|
||||||
_socket.async_connect(ep, boost::asio::bind_executor(_strand, handle_connect));
|
_socket.async_connect(ep, boost::asio::bind_executor(_strand, handle_connect));
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Client::Stop() {
|
void Client::Stop() {
|
||||||
_connection_timer.cancel();
|
_connection_timer.cancel();
|
||||||
auto self = shared_from_this();
|
auto self = shared_from_this();
|
||||||
boost::asio::post(_strand, [this, self]() {
|
|
||||||
_done = true;
|
_done = true;
|
||||||
if (_socket.is_open()) {
|
if (_socket.is_open()) {
|
||||||
_socket.close();
|
_socket.close();
|
||||||
}
|
}
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Client::Reconnect() {
|
void Client::Reconnect() {
|
||||||
|
@ -165,7 +160,6 @@ namespace tcp {
|
||||||
|
|
||||||
void Client::ReadData() {
|
void Client::ReadData() {
|
||||||
auto self = shared_from_this();
|
auto self = shared_from_this();
|
||||||
boost::asio::post(_strand, [this, self]() {
|
|
||||||
if (_done) {
|
if (_done) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -182,7 +176,7 @@ namespace tcp {
|
||||||
// Move the buffer to the callback function and start reading the next
|
// Move the buffer to the callback function and start reading the next
|
||||||
// piece of data.
|
// piece of data.
|
||||||
// log_debug("streaming client: success reading data, calling the callback");
|
// log_debug("streaming client: success reading data, calling the callback");
|
||||||
boost::asio::post(_strand, [self, message]() { self->_callback(message->pop()); });
|
self->_callback(message->pop());
|
||||||
ReadData();
|
ReadData();
|
||||||
} else {
|
} else {
|
||||||
// As usual, if anything fails start over from the very top.
|
// As usual, if anything fails start over from the very top.
|
||||||
|
@ -219,7 +213,6 @@ namespace tcp {
|
||||||
_socket,
|
_socket,
|
||||||
message->size_as_buffer(),
|
message->size_as_buffer(),
|
||||||
boost::asio::bind_executor(_strand, handle_read_header));
|
boost::asio::bind_executor(_strand, handle_read_header));
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace tcp
|
} // namespace tcp
|
||||||
|
|
|
@ -79,7 +79,6 @@ namespace tcp {
|
||||||
DEBUG_ASSERT(message != nullptr);
|
DEBUG_ASSERT(message != nullptr);
|
||||||
DEBUG_ASSERT(!message->empty());
|
DEBUG_ASSERT(!message->empty());
|
||||||
auto self = shared_from_this();
|
auto self = shared_from_this();
|
||||||
boost::asio::post(_strand, [=]() {
|
|
||||||
if (!_socket.is_open()) {
|
if (!_socket.is_open()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -111,11 +110,8 @@ namespace tcp {
|
||||||
log_debug("session", _session_id, ": sending message of", message->size(), "bytes");
|
log_debug("session", _session_id, ": sending message of", message->size(), "bytes");
|
||||||
|
|
||||||
_deadline.expires_from_now(_timeout);
|
_deadline.expires_from_now(_timeout);
|
||||||
boost::asio::async_write(
|
boost::asio::async_write(_socket, message->GetBufferSequence(),
|
||||||
_socket,
|
boost::asio::bind_executor(_strand, handle_sent));
|
||||||
message->GetBufferSequence(),
|
|
||||||
handle_sent);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ServerSession::Close() {
|
void ServerSession::Close() {
|
||||||
|
|
Loading…
Reference in New Issue