dev: zmq hwm rebind (#1480)
Build on RHEL9 docker image / build (push) Successful in 5m3s
Build on RHEL8 docker image / build (push) Successful in 5m43s
Build and Deploy on local RHEL9 / build (push) Successful in 2m18s
Build and Deploy on local RHEL8 / build (push) Successful in 5m5s
Run Simulator Tests on local RHEL9 / build (push) Successful in 20m8s
Run Simulator Tests on local RHEL8 / build (push) Successful in 23m45s

* move hwm into the zmq constructor and reconstruct the socket instead of rebind. seems to work better than rebind (most connections cant bind so fast?)

* fix after merge

* added tests to reconnect zmq sockets when setting rx zmqport and rx zmqhwm, changed the tests scripts a bit to make the receiver starting tcp port configurable

* tests: slsreceiver also starting up  with 2000 as default tcp port, using latest cli args for receiver and multi receiver

* releasr notes

---------

Co-authored-by: AliceMazzoleni99 <alice.mazzoleni@psi.ch>
This commit is contained in:
2026-07-21 15:45:56 +02:00
committed by GitHub
co-authored by mazzol_a
parent 7db947e4d2
commit 8a87c83615
13 changed files with 227 additions and 117 deletions
+10 -6
View File
@@ -78,16 +78,20 @@ void DataStreamer::RecordFirstIndex(uint64_t fnum, size_t firstImageIndex) {
<< ", First Streamer Index:" << fnum;
}
int DataStreamer::GetZmqHwm() const {
if (zmqSocket) {
return zmqSocket->GetSendHighWaterMark();
}
return -1;
}
void DataStreamer::CreateZmqSockets(uint16_t port, int hwm) {
uint16_t portnum = port + index;
try {
zmqSocket = new ZmqSocket(portnum);
// set if custom
if (hwm >= 0) {
zmqSocket->SetSendHighWaterMark(hwm);
// needed, or HWL is not taken
zmqSocket->Rebind();
zmqSocket = new ZmqSocket(portnum, hwm);
} else {
zmqSocket = new ZmqSocket(portnum);
}
} catch (std::exception &e) {
std::ostringstream oss;