TCP: Fixes - allow for live monitoring of ACK progress
This commit is contained in:
@@ -460,13 +460,10 @@ void TCPStreamPusherSocket::AckThread() {
|
||||
last_ack_error = "CANCEL rejected";
|
||||
} else if (ack_for == TCPFrameType::DATA) {
|
||||
data_acked_total.fetch_add(1, std::memory_order_relaxed);
|
||||
last_processed_images.store(h.ack_processed_images, std::memory_order_relaxed);
|
||||
|
||||
if (ok && !fatal) {
|
||||
data_acked_ok.fetch_add(1, std::memory_order_relaxed);
|
||||
} else {
|
||||
data_acked_bad.fetch_add(1, std::memory_order_relaxed);
|
||||
broken = true; // mandatory DATA ACK mode: bad DATA ACK breaks stream
|
||||
if (error_text.empty())
|
||||
last_ack_error = "DATA ACK failed";
|
||||
logger.Error("Received failing DATA ACK on " + endpoint + ": " + last_ack_error);
|
||||
@@ -497,7 +494,6 @@ void TCPStreamPusherSocket::StartWriterThread() {
|
||||
data_acked_ok.store(0, std::memory_order_relaxed);
|
||||
data_acked_bad.store(0, std::memory_order_relaxed);
|
||||
data_acked_total.store(0, std::memory_order_relaxed);
|
||||
last_processed_images.store(0, std::memory_order_relaxed);
|
||||
|
||||
active = true;
|
||||
send_future = std::async(std::launch::async, &TCPStreamPusherSocket::WriterThread, this);
|
||||
@@ -598,6 +594,5 @@ ImagePusherAckProgress TCPStreamPusherSocket::GetDataAckProgress() const {
|
||||
p.data_acked_bad = data_acked_bad.load(std::memory_order_relaxed);
|
||||
p.data_acked_total = data_acked_total.load(std::memory_order_relaxed);
|
||||
p.data_ack_pending = (p.data_sent >= p.data_acked_total) ? (p.data_sent - p.data_acked_total) : 0;
|
||||
p.last_processed_images = last_processed_images.load(std::memory_order_relaxed);
|
||||
return p;
|
||||
}
|
||||
Reference in New Issue
Block a user