v1.0.0-rc.135 (#44)
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 9m55s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 10m28s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 8m56s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 11m47s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 13m7s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 12m31s
Build Packages / build:rpm (rocky8) (push) Successful in 12m59s
Build Packages / build:rpm (rocky9) (push) Successful in 14m5s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 15m30s
Build Packages / Generate python client (push) Successful in 1m18s
Build Packages / Build documentation (push) Successful in 1m3s
Build Packages / Create release (push) Has been skipped
Build Packages / build:rpm (ubuntu2404) (push) Successful in 10m8s
Build Packages / XDS test (durin plugin) (push) Successful in 9m16s
Build Packages / XDS test (neggia plugin) (push) Successful in 7m59s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 9m12s
Build Packages / DIALS test (push) Successful in 11m44s
Build Packages / Unit tests (push) Successful in 1h23m8s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 9m55s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 10m28s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 8m56s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 11m47s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 13m7s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 12m31s
Build Packages / build:rpm (rocky8) (push) Successful in 12m59s
Build Packages / build:rpm (rocky9) (push) Successful in 14m5s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 15m30s
Build Packages / Generate python client (push) Successful in 1m18s
Build Packages / Build documentation (push) Successful in 1m3s
Build Packages / Create release (push) Has been skipped
Build Packages / build:rpm (ubuntu2404) (push) Successful in 10m8s
Build Packages / XDS test (durin plugin) (push) Successful in 9m16s
Build Packages / XDS test (neggia plugin) (push) Successful in 7m59s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 9m12s
Build Packages / DIALS test (push) Successful in 11m44s
Build Packages / Unit tests (push) Successful in 1h23m8s
This is an UNSTABLE release. The release has significant modifications and bug fixes, if things go wrong, it is better to revert to 1.0.0-rc.132. * Multiple small bug fixes scattered across the whole code base. (detected with GPT-5.4) * jfjoch_viewer: Improve image render performance Reviewed-on: #44 Co-authored-by: Filip Leonarski <filip.leonarski@psi.ch> Co-committed-by: Filip Leonarski <filip.leonarski@psi.ch>
This commit was merged in pull request #44.
This commit is contained in:
@@ -150,6 +150,7 @@ TCPStreamPusher::~TCPStreamPusher() {
|
||||
local_connections = std::move(connections);
|
||||
connections.clear();
|
||||
session_connections.clear();
|
||||
calibration_connection.reset();
|
||||
}
|
||||
|
||||
for (auto& c : local_connections) {
|
||||
@@ -923,6 +924,7 @@ void TCPStreamPusher::StartDataCollection(StartMessage& message) {
|
||||
throw JFJochException(JFJochExceptionCategory::InputParameterInvalid, "No writers connected to " + endpoint);
|
||||
|
||||
session_connections = connections;
|
||||
calibration_connection = session_connections[0];
|
||||
local_connections = session_connections;
|
||||
}
|
||||
|
||||
@@ -953,6 +955,7 @@ void TCPStreamPusher::StartDataCollection(StartMessage& message) {
|
||||
{
|
||||
std::lock_guard lg(connections_mutex);
|
||||
session_connections.clear();
|
||||
calibration_connection.reset();
|
||||
}
|
||||
data_collection_active = false;
|
||||
};
|
||||
@@ -1085,6 +1088,7 @@ bool TCPStreamPusher::EndDataCollection(const EndMessage& message) {
|
||||
{
|
||||
std::lock_guard lg(connections_mutex);
|
||||
session_connections.clear();
|
||||
calibration_connection.reset();
|
||||
}
|
||||
|
||||
data_collection_active = false;
|
||||
@@ -1094,20 +1098,82 @@ bool TCPStreamPusher::EndDataCollection(const EndMessage& message) {
|
||||
|
||||
bool TCPStreamPusher::SendCalibration(const CompressedImage& message) {
|
||||
std::shared_ptr<Connection> target;
|
||||
|
||||
{
|
||||
std::lock_guard lg(connections_mutex);
|
||||
if (connections.empty())
|
||||
|
||||
if (!data_collection_active) {
|
||||
logger.Error("Refusing to send TCP calibration: no active run");
|
||||
return false;
|
||||
target = connections[0];
|
||||
}
|
||||
|
||||
if (!calibration_connection) {
|
||||
logger.Error("Refusing to send TCP calibration: calibration target is not set");
|
||||
return false;
|
||||
}
|
||||
|
||||
target = calibration_connection;
|
||||
}
|
||||
|
||||
if (!target || target->broken)
|
||||
if (!target) {
|
||||
logger.Error("Refusing to send TCP calibration: calibration target is null");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (target->broken) {
|
||||
logger.Error("Refusing to send TCP calibration: target socket {} is marked broken", target->socket_number);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!target->connected) {
|
||||
logger.Error("Refusing to send TCP calibration: target socket {} is not connected", target->socket_number);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!target->active) {
|
||||
logger.Error("Refusing to send TCP calibration: target socket {} is not active in current session", target->socket_number);
|
||||
return false;
|
||||
}
|
||||
|
||||
serializer.SerializeCalibration(message);
|
||||
|
||||
std::unique_lock ul(target->send_mutex);
|
||||
return SendFrame(*target, serialization_buffer.data(), serializer.GetBufferSize(), TCPFrameType::CALIBRATION, -1, nullptr);
|
||||
|
||||
if (target->broken) {
|
||||
logger.Error("Refusing to send TCP calibration: target socket {} became broken before send", target->socket_number);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!target->connected) {
|
||||
logger.Error("Refusing to send TCP calibration: target socket {} disconnected before send", target->socket_number);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!target->active) {
|
||||
logger.Error("Refusing to send TCP calibration: target socket {} became inactive before send", target->socket_number);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!IsConnectionAlive(*target)) {
|
||||
logger.Error("Refusing to send TCP calibration: target socket {} is not alive", target->socket_number);
|
||||
target->broken = true;
|
||||
return false;
|
||||
}
|
||||
|
||||
const bool ok = SendFrame(*target,
|
||||
serialization_buffer.data(),
|
||||
serializer.GetBufferSize(),
|
||||
TCPFrameType::CALIBRATION,
|
||||
-1,
|
||||
nullptr);
|
||||
|
||||
if (!ok) {
|
||||
logger.Error("Failed to send TCP calibration on socket {}", target->socket_number);
|
||||
target->broken = true;
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
std::string TCPStreamPusher::Finalize() {
|
||||
|
||||
Reference in New Issue
Block a user