fix incorrect setting of high water mark

Socket settings need to be set before connecting to the socket
Also, increase high water mark
This commit is contained in:
Gunther Schulz
2020-11-22 13:21:39 +01:00
parent 08b83713af
commit 1a0ce7af3a
2 changed files with 23 additions and 25 deletions
+17 -17
View File
@@ -113,6 +113,23 @@ ControlErrors mControl;
//+------------------------------------------------------------------+
bool BindSockets()
{
sysSocket.setLinger(1000);
dataSocket.setLinger(1000);
liveSocket.setLinger(1000);
streamSocket.setLinger(1000);
indicatorDataSocket.setLinger(1000);
chartDataSocket.setLinger(1000);
chartIndicatorDataSocket.setLinger(1000);
// Number of messages to buffer in RAM.
sysSocket.setSendHighWaterMark(1000);
dataSocket.setSendHighWaterMark(1000);
liveSocket.setSendHighWaterMark(1000);
streamSocket.setSendHighWaterMark(1000);
indicatorDataSocket.setSendHighWaterMark(1000);
chartDataSocket.setReceiveHighWaterMark(1000); // TODO confirm settings
chartIndicatorDataSocket.setReceiveHighWaterMark(1000);
bool result = false;
result = sysSocket.bind(StringFormat("tcp://%s:%d", HOST,SYS_PORT));
if(result == false)
@@ -178,23 +195,6 @@ bool BindSockets()
Print("Bound 'JsonAPIIndicator Data' socket on port ", CHART_INDICATOR_DATA_PORT);
}
sysSocket.setLinger(1000);
dataSocket.setLinger(1000);
liveSocket.setLinger(1000);
streamSocket.setLinger(1000);
indicatorDataSocket.setLinger(1000);
chartDataSocket.setLinger(1000);
chartIndicatorDataSocket.setLinger(1000);
// Number of messages to buffer in RAM.
sysSocket.setSendHighWaterMark(1);
dataSocket.setSendHighWaterMark(5);
liveSocket.setSendHighWaterMark(1);
streamSocket.setSendHighWaterMark(50);
indicatorDataSocket.setSendHighWaterMark(5);
chartDataSocket.setReceiveHighWaterMark(1); // TODO confirm settings
chartIndicatorDataSocket.setReceiveHighWaterMark(1);
return result;
}
+6 -8
View File
@@ -46,7 +46,12 @@ int activeBufferCount = 0;
int OnInit()
{
// TODO subscribe only to own IndicatorId topic
// Subscribe to all topics
chartSubscriptionSocket.setSubscribe("");
chartSubscriptionSocket.setLinger(1000);
// Number of messages to buffer in RAM.
chartSubscriptionSocket.setReceiveHighWaterMark(1000); // TODO confirm settings
bool result = chartSubscriptionSocket.connect(StringFormat("tcp://%s:%d", HOST, CHART_SUB_PORT));
if(result == false)
{
@@ -55,13 +60,6 @@ int OnInit()
else
{
Print("Accepting Chart Indicator data on port ", CHART_SUB_PORT);
// TODO subscribe only to own IndicatorId topic
// Subscribe to all topics
chartSubscriptionSocket.setSubscribe("");
//chartSubscriptionSocket.setLinger(1000);
chartSubscriptionSocket.setLinger(10000);
// Number of messages to buffer in RAM.
chartSubscriptionSocket.setReceiveHighWaterMark(5); // TODO confirm settings
}