summaryrefslogtreecommitdiff
path: root/api/src
diff options
context:
space:
mode:
authorMike Vink <mike1994vink@gmail.com>2021-07-21 16:48:47 +0200
committerMike Vink <mike1994vink@gmail.com>2021-07-21 16:48:47 +0200
commit5d76a30aeba5bfd175b60845c4935c4352b46f4c (patch)
tree0b3bb79bb71fca8b412a168147d941d3f3f13131 /api/src
parentda613e94970da31409464c81740162f9bd7c7831 (diff)
feat(): heartbeat working on remote engine
Diffstat (limited to 'api/src')
-rw-r--r--api/src/main/java/akkamon/api/MessagingEngine.java45
-rw-r--r--api/src/main/java/akkamon/api/models/HeartBeatEvent.java9
2 files changed, 42 insertions, 12 deletions
diff --git a/api/src/main/java/akkamon/api/MessagingEngine.java b/api/src/main/java/akkamon/api/MessagingEngine.java
index 17b8f08..dc22752 100644
--- a/api/src/main/java/akkamon/api/MessagingEngine.java
+++ b/api/src/main/java/akkamon/api/MessagingEngine.java
@@ -3,15 +3,13 @@ package akkamon.api;
import akka.actor.typed.ActorRef;
import akka.actor.typed.ActorSystem;
import akkamon.api.models.Event;
+import akkamon.api.models.HeartBeatEvent;
import akkamon.domain.AkkamonMessageEngine;
import akkamon.domain.AkkamonNexus;
import akkamon.domain.AkkamonSession;
import com.google.gson.Gson;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Set;
-import java.util.UUID;
+import java.util.*;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
@@ -43,18 +41,43 @@ public class MessagingEngine implements AkkamonMessageEngine {
}
@Override
- public void broadCastToScene(String sceneId, String message) {
- Set<AkkamonSession> sessionsInScene = sceneIdToAkkamonSessions.get(sceneId);
- for (AkkamonSession session : sessionsInScene) {
- session.send(message);
+ public void broadCastHeartBeatToScene(String sceneId,
+ Map<String, AkkamonNexus.TrainerPositionReading> trainerPositions) {
+ Set<AkkamonSession> sceneSessions = sceneIdToAkkamonSessions.get(sceneId);
+ System.out.println(sceneSessions);
+ System.out.println(sceneIdToAkkamonSessions.keySet());
+ if (sceneSessions != null) {
+ for (AkkamonSession session : sceneSessions) {
+ Map<String, AkkamonNexus.TrainerPositionReading> withoutSelf = new HashMap<>(trainerPositions);
+ withoutSelf.remove(session.getTrainerId());
+ HeartBeatEvent heartBeat = new HeartBeatEvent(
+ withoutSelf
+ );
+ String heartBeatMessage = gson.toJson(heartBeat);
+ System.out.println("Sending to " + session.getTrainerId());
+ System.out.println(heartBeatMessage);
+ session.send(
+ heartBeatMessage
+ );
+ }
}
}
@Override
public void registerTrainerSessionToScene(String sceneId, AkkamonSession session) {
- sceneIdToAkkamonSessions.get(sceneId).add(session);
- session.setTrainerId(sceneId);
- heartBeat();
+ System.out.println("Registering session to scene " + sceneId);
+ Set<AkkamonSession> sessionsInScene = sceneIdToAkkamonSessions.get(sceneId);
+ if (sessionsInScene != null) {
+ sessionsInScene.add(session);
+ } else {
+ sessionsInScene = new HashSet<>();
+ sessionsInScene.add(session);
+ sceneIdToAkkamonSessions.put(sceneId,
+ sessionsInScene
+ );
+ System.out.println(sceneIdToAkkamonSessions.keySet());
+ }
+ //heartBeat();
}
@Override
diff --git a/api/src/main/java/akkamon/api/models/HeartBeatEvent.java b/api/src/main/java/akkamon/api/models/HeartBeatEvent.java
index 472c7e4..8db514b 100644
--- a/api/src/main/java/akkamon/api/models/HeartBeatEvent.java
+++ b/api/src/main/java/akkamon/api/models/HeartBeatEvent.java
@@ -1,7 +1,14 @@
package akkamon.api.models;
+import akkamon.domain.AkkamonNexus;
+
+import java.util.Map;
+
public class HeartBeatEvent extends Event {
- public HeartBeatEvent() {
+ public Map<String, AkkamonNexus.TrainerPositionReading> remoteTrainerPositions;
+
+ public HeartBeatEvent(Map<String, AkkamonNexus.TrainerPositionReading> remoteTrainerPositions) {
this.type = EventType.HEART_BEAT;
+ this.remoteTrainerPositions = remoteTrainerPositions;
}
}