zmq: set zmq buffer size also to 0 if hwm >= 25 (#653)

This commit is contained in:
Dhanya Thattil 2023-02-10 08:57:36 +01:00 committed by GitHub
parent 4ee4d66977
commit 8361f2bb96
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 8 deletions

View File

@ -32,8 +32,9 @@ namespace sls {
#define ROIVERBOSITY
// high water mark for gui
#define DEFFAULT_LOW_HWM (25)
#define DEFAULT_LOW_HWM_BUFFERSIZE (1024 * 1024) // 1MB
#define DEFFAULT_LOW_ZMQ_HWM (25)
#define DEFAULT_LOW_ZMQ_HWM_BUFFERSIZE (1024 * 1024) // 1MB
#define DEFAULT_ZMQ_BUFFERSIZE (0) // os default
/** zmq header structure */
struct zmqHeader {
@ -113,14 +114,14 @@ class ZmqSocket {
int GetSendHighWaterMark();
/** Sets high water mark for outbound messages. Default 1000 (zmqlib). Also
* changes send buffer size depending on low hwm. Must rebind. */
* changes send buffer size depending on hwm. Must rebind. */
void SetSendHighWaterMark(int limit);
/** Returns high water mark for inbound messages */
int GetReceiveHighWaterMark();
/** Sets high water mark for inbound messages. Default 1000 (zmqlib). Also
* changes receiver buffer size depending on low hwm. Must reconnect */
* changes receiver buffer size depending on hwm. Must reconnect */
void SetReceiveHighWaterMark(int limit);
/** Gets kernel buffer for outbound messages. Default 0 (os) */

View File

@ -106,9 +106,12 @@ void ZmqSocket::SetSendHighWaterMark(int limit) {
throw ZmqSocketError("Could not set ZMQ_SNDHWM to " +
std::to_string(limit));
}
if (limit < DEFFAULT_LOW_HWM) {
SetSendBuffer(DEFAULT_LOW_HWM_BUFFERSIZE);
int bufsize = DEFAULT_ZMQ_BUFFERSIZE;
if (limit < DEFFAULT_LOW_ZMQ_HWM) {
bufsize = DEFAULT_LOW_ZMQ_HWM_BUFFERSIZE;
}
SetSendBuffer(bufsize);
}
int ZmqSocket::GetReceiveHighWaterMark() {
@ -132,9 +135,11 @@ void ZmqSocket::SetReceiveHighWaterMark(int limit) {
throw ZmqSocketError("Could not set ZMQ_RCVHWM to " +
std::to_string(limit));
}
if (limit < DEFFAULT_LOW_HWM) {
SetReceiveBuffer(DEFAULT_LOW_HWM_BUFFERSIZE);
int bufsize = DEFAULT_ZMQ_BUFFERSIZE;
if (limit < DEFFAULT_LOW_ZMQ_HWM) {
bufsize = DEFAULT_LOW_ZMQ_HWM_BUFFERSIZE;
}
SetReceiveBuffer(bufsize);
}
int ZmqSocket::GetSendBuffer() {