mirror of
https://github.com/overte-org/overte.git
synced 2025-08-14 16:59:40 +02:00
Add proper message failure handling to Connection
This commit is contained in:
parent
2e76f0e0d8
commit
304b105dac
4 changed files with 17 additions and 0 deletions
|
@ -49,6 +49,11 @@ Connection::Connection(Socket* parentSocket, HifiSockAddr destination, std::uniq
|
|||
|
||||
Connection::~Connection() {
|
||||
stopSendQueue();
|
||||
|
||||
// Fail any pending received messages
|
||||
for (auto& pendingMessage : _pendingReceivedMessages) {
|
||||
_parentSocket->messageFailed(this, pendingMessage.first);
|
||||
}
|
||||
}
|
||||
|
||||
void Connection::stopSendQueue() {
|
||||
|
@ -805,6 +810,9 @@ void Connection::resetReceiveState() {
|
|||
_receivedControlProbeTail = false;
|
||||
|
||||
// clear any pending received messages
|
||||
for (auto& pendingMessage : _pendingReceivedMessages) {
|
||||
_parentSocket->messageFailed(this, pendingMessage.first);
|
||||
}
|
||||
_pendingReceivedMessages.clear();
|
||||
}
|
||||
|
||||
|
|
|
@ -74,6 +74,8 @@ public:
|
|||
|
||||
bool isActive() const { return _isActive; }
|
||||
|
||||
HifiSockAddr getDestination() const { return _destination; }
|
||||
|
||||
signals:
|
||||
void packetSent();
|
||||
void connectionInactive(const HifiSockAddr& sockAddr);
|
||||
|
|
|
@ -218,6 +218,12 @@ void Socket::messageReceived(std::unique_ptr<Packet> packet) {
|
|||
}
|
||||
}
|
||||
|
||||
void Socket::messageFailed(Connection* connection, Packet::MessageNumber messageNumber) {
|
||||
if (_messageFailureHandler) {
|
||||
_messageFailureHandler(connection->getDestination(), messageNumber);
|
||||
}
|
||||
}
|
||||
|
||||
void Socket::readPendingDatagrams() {
|
||||
int packetSizeWithHeader = -1;
|
||||
while ((packetSizeWithHeader = _udpSocket.pendingDatagramSize()) != -1) {
|
||||
|
|
|
@ -74,6 +74,7 @@ public:
|
|||
void setCongestionControlFactory(std::unique_ptr<CongestionControlVirtualFactory> ccFactory);
|
||||
|
||||
void messageReceived(std::unique_ptr<Packet> packet);
|
||||
void messageFailed(Connection* connection, Packet::MessageNumber messageNumber);
|
||||
|
||||
StatsVector sampleStatsForAllConnections();
|
||||
|
||||
|
|
Loading…
Reference in a new issue