2 Commits

Author SHA1 Message Date
Gunther Schulz 1c47fc12d1 fix bug tthat every second tick was dropped
Every other tick used to be dropped before this fix, because of incrementing the counter twice in a loop
2020-11-22 13:24:09 +01:00
Gunther Schulz 1a0ce7af3a fix incorrect setting of high water mark
Socket settings need to be set before connecting to the socket
Also, increase high water mark
2020-11-22 13:21:39 +01:00
2 changed files with 23 additions and 26 deletions
+17 -18
View File
@@ -113,6 +113,23 @@ ControlErrors mControl;
//+------------------------------------------------------------------+ //+------------------------------------------------------------------+
bool BindSockets() 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; bool result = false;
result = sysSocket.bind(StringFormat("tcp://%s:%d", HOST,SYS_PORT)); result = sysSocket.bind(StringFormat("tcp://%s:%d", HOST,SYS_PORT));
if(result == false) if(result == false)
@@ -178,23 +195,6 @@ bool BindSockets()
Print("Bound 'JsonAPIIndicator Data' socket on port ", CHART_INDICATOR_DATA_PORT); 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; return result;
} }
@@ -1099,7 +1099,6 @@ void HistoryInfo(CJAVal &dataObject)
data[i][0]=(long) tickArray[i].time_msc; data[i][0]=(long) tickArray[i].time_msc;
data[i][1]=(double) tickArray[i].bid; data[i][1]=(double) tickArray[i].bid;
data[i][2]=(double) tickArray[i].ask; data[i][2]=(double) tickArray[i].ask;
i++;
} }
d["data"].Set(data); d["data"].Set(data);
} }
+6 -8
View File
@@ -46,7 +46,12 @@ int activeBufferCount = 0;
int OnInit() 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)); bool result = chartSubscriptionSocket.connect(StringFormat("tcp://%s:%d", HOST, CHART_SUB_PORT));
if(result == false) if(result == false)
{ {
@@ -55,13 +60,6 @@ int OnInit()
else else
{ {
Print("Accepting Chart Indicator data on port ", CHART_SUB_PORT); 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
} }