From 11b89e0dcb8249a772e1c5fff8bfcba24250fc17 Mon Sep 17 00:00:00 2001 From: Pablete1234 Date: Wed, 22 Feb 2017 08:22:59 +0100 Subject: [PATCH] Add local message system --- .../oc/api/whispers/LocalWhisperService.java | 35 +++++++++++++++++++ .../oc/api/whispers/NullWhisperService.java | 17 --------- .../oc/api/whispers/WhisperModelManifest.java | 2 +- 3 files changed, 36 insertions(+), 18 deletions(-) create mode 100644 API/api/src/main/java/tc/oc/api/whispers/LocalWhisperService.java delete mode 100644 API/api/src/main/java/tc/oc/api/whispers/NullWhisperService.java diff --git a/API/api/src/main/java/tc/oc/api/whispers/LocalWhisperService.java b/API/api/src/main/java/tc/oc/api/whispers/LocalWhisperService.java new file mode 100644 index 0000000..192c837 --- /dev/null +++ b/API/api/src/main/java/tc/oc/api/whispers/LocalWhisperService.java @@ -0,0 +1,35 @@ +package tc.oc.api.whispers; + +import com.google.common.reflect.TypeToken; +import com.google.common.util.concurrent.Futures; +import com.google.common.util.concurrent.ListenableFuture; +import com.google.inject.Inject; +import tc.oc.api.docs.PlayerId; +import tc.oc.api.docs.Whisper; +import tc.oc.api.docs.virtual.WhisperDoc; +import tc.oc.api.exceptions.NotFound; +import tc.oc.api.message.LocalMessageService; +import tc.oc.api.message.types.ModelUpdate; +import tc.oc.api.model.NullModelService; + +public class LocalWhisperService extends NullModelService implements WhisperService { + + @Inject private LocalMessageService queue; + + @Override + public ListenableFuture forReply(PlayerId user) { + return Futures.immediateFailedFuture(new NotFound()); + } + + @Override + public ListenableFuture update(WhisperDoc.Partial partial) { + // Receives an Out object from WhisperDispatcher, and it implements Whisper, so we can just cast it. + if (partial instanceof Whisper) { + Whisper whisper = (Whisper) partial; + queue.receive((ModelUpdate) () -> whisper, new TypeToken>(){}); + return Futures.immediateFuture(whisper); + } + return Futures.immediateFailedFuture(new NotFound()); + } + +} diff --git a/API/api/src/main/java/tc/oc/api/whispers/NullWhisperService.java b/API/api/src/main/java/tc/oc/api/whispers/NullWhisperService.java deleted file mode 100644 index 6018511..0000000 --- a/API/api/src/main/java/tc/oc/api/whispers/NullWhisperService.java +++ /dev/null @@ -1,17 +0,0 @@ -package tc.oc.api.whispers; - -import com.google.common.util.concurrent.Futures; -import com.google.common.util.concurrent.ListenableFuture; -import tc.oc.api.docs.PlayerId; -import tc.oc.api.docs.Whisper; -import tc.oc.api.docs.virtual.WhisperDoc; -import tc.oc.api.exceptions.NotFound; -import tc.oc.api.model.NullModelService; - -public class NullWhisperService extends NullModelService implements WhisperService { - - @Override - public ListenableFuture forReply(PlayerId user) { - return Futures.immediateFailedFuture(new NotFound()); - } -} diff --git a/API/api/src/main/java/tc/oc/api/whispers/WhisperModelManifest.java b/API/api/src/main/java/tc/oc/api/whispers/WhisperModelManifest.java index 7f7aac7..7d4500d 100644 --- a/API/api/src/main/java/tc/oc/api/whispers/WhisperModelManifest.java +++ b/API/api/src/main/java/tc/oc/api/whispers/WhisperModelManifest.java @@ -15,7 +15,7 @@ public class WhisperModelManifest extends HybridManifest implements ModelBinders }); OptionalBinder.newOptionalBinder(publicBinder(), WhisperService.class) - .setDefault().to(NullWhisperService.class); + .setDefault().to(LocalWhisperService.class); } }