|
24 | 24 |
|
25 | 25 | import org.eclipse.ditto.base.model.headers.DittoHeaders;
|
26 | 26 | import org.eclipse.ditto.connectivity.model.Connection;
|
| 27 | +import org.eclipse.ditto.connectivity.model.ConnectionType; |
27 | 28 | import org.eclipse.ditto.connectivity.model.ConnectivityStatus;
|
28 | 29 | import org.eclipse.ditto.connectivity.model.ResourceStatus;
|
29 | 30 | import org.eclipse.ditto.connectivity.model.SshTunnel;
|
@@ -75,19 +76,16 @@ private RetrieveConnectionStatusAggregatorActor(final Connection connection,
|
75 | 76 | configuredClientCount = connection.getClientCount();
|
76 | 77 | // one response per client actor
|
77 | 78 | expectedResponses.put(ResourceStatus.ResourceType.CLIENT, configuredClientCount);
|
| 79 | + |
78 | 80 | if (ConnectivityStatus.OPEN.equals(connection.getConnectionStatus())) {
|
79 | 81 | // one response per source/target
|
80 | 82 | expectedResponses.put(ResourceStatus.ResourceType.TARGET,
|
81 | 83 | connection.getTargets()
|
82 | 84 | .stream()
|
83 | 85 | .mapToInt(target -> configuredClientCount)
|
84 | 86 | .sum());
|
85 |
| - expectedResponses.put(ResourceStatus.ResourceType.SOURCE, |
86 |
| - connection.getSources() |
87 |
| - .stream() |
88 |
| - .mapToInt(source -> configuredClientCount * source.getConsumerCount() * |
89 |
| - source.getAddresses().size()) |
90 |
| - .sum()); |
| 87 | + expectedResponses.put(ResourceStatus.ResourceType.SOURCE, determineSourceCount(connection)); |
| 88 | + |
91 | 89 | if (connection.getSshTunnel().map(SshTunnel::isEnabled).orElse(false)) {
|
92 | 90 | expectedResponses.put(ResourceStatus.ResourceType.SSH_TUNNEL, configuredClientCount);
|
93 | 91 | }
|
@@ -240,4 +238,23 @@ private static ConnectivityStatus calculateOverallLiveStatus(final ConnectivityS
|
240 | 238 | private void stopSelf() {
|
241 | 239 | getContext().stop(getSelf());
|
242 | 240 | }
|
| 241 | + |
| 242 | + private int determineSourceCount(final Connection connection) { |
| 243 | + final int sourceCount; |
| 244 | + if(connection.getConnectionType().equals(ConnectionType.MQTT)) { |
| 245 | + // for mqtt only one consumer actor for all addresses of a source is started. |
| 246 | + sourceCount = connection.getSources() |
| 247 | + .stream() |
| 248 | + .mapToInt(source -> configuredClientCount * source.getConsumerCount()) |
| 249 | + .sum(); |
| 250 | + } else { |
| 251 | + sourceCount = connection.getSources() |
| 252 | + .stream() |
| 253 | + .mapToInt(source -> configuredClientCount * source.getConsumerCount() * source.getAddresses().size()) |
| 254 | + .sum(); |
| 255 | + } |
| 256 | + |
| 257 | + return sourceCount; |
| 258 | + } |
| 259 | + |
243 | 260 | }
|
0 commit comments