aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/traccar/handler/AcknowledgementHandler.java
diff options
context:
space:
mode:
authorAnton Tananaev <anton@traccar.org>2024-03-30 18:46:37 -0700
committerAnton Tananaev <anton@traccar.org>2024-03-30 18:46:37 -0700
commitf84e2710e05660822633ec9e61cde44c03a42d7e (patch)
tree0d68bee50cc42ed206d270275dfb32b4b69c5186 /src/main/java/org/traccar/handler/AcknowledgementHandler.java
parentee996425221ca64fdf00777d9035cedc6dccfa43 (diff)
downloadtrackermap-server-f84e2710e05660822633ec9e61cde44c03a42d7e.tar.gz
trackermap-server-f84e2710e05660822633ec9e61cde44c03a42d7e.tar.bz2
trackermap-server-f84e2710e05660822633ec9e61cde44c03a42d7e.zip
Refactor position and event handlers
Diffstat (limited to 'src/main/java/org/traccar/handler/AcknowledgementHandler.java')
-rw-r--r--src/main/java/org/traccar/handler/AcknowledgementHandler.java121
1 files changed, 0 insertions, 121 deletions
diff --git a/src/main/java/org/traccar/handler/AcknowledgementHandler.java b/src/main/java/org/traccar/handler/AcknowledgementHandler.java
deleted file mode 100644
index 4c1085998..000000000
--- a/src/main/java/org/traccar/handler/AcknowledgementHandler.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * Copyright 2023 Anton Tananaev (anton@traccar.org)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.traccar.handler;
-
-import io.netty.channel.ChannelHandlerContext;
-import io.netty.channel.ChannelOutboundHandlerAdapter;
-import io.netty.channel.ChannelPromise;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Set;
-
-public class AcknowledgementHandler extends ChannelOutboundHandlerAdapter {
-
- private static final Logger LOGGER = LoggerFactory.getLogger(AcknowledgementHandler.class);
-
- public interface Event {
- }
-
- public static class EventReceived implements Event {
- }
-
- public static class EventDecoded implements Event {
- private final Collection<Object> objects;
-
- public EventDecoded(Collection<Object> objects) {
- this.objects = objects;
- }
-
- public Collection<Object> getObjects() {
- return objects;
- }
- }
-
- public static class EventHandled implements Event {
- private final Object object;
-
- public EventHandled(Object object) {
- this.object = object;
- }
-
- public Object getObject() {
- return object;
- }
- }
-
- private static final class Entry {
- private final Object message;
- private final ChannelPromise promise;
-
- private Entry(Object message, ChannelPromise promise) {
- this.message = message;
- this.promise = promise;
- }
-
- public Object getMessage() {
- return message;
- }
-
- public ChannelPromise getPromise() {
- return promise;
- }
- }
-
- private List<Entry> queue;
- private final Set<Object> waiting = new HashSet<>();
-
- @Override
- public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception {
- List<Entry> output = new LinkedList<>();
- synchronized (this) {
- if (msg instanceof Event) {
- if (msg instanceof EventReceived) {
- LOGGER.debug("Event received");
- if (queue == null) {
- queue = new LinkedList<>();
- }
- } else if (msg instanceof EventDecoded) {
- EventDecoded event = (EventDecoded) msg;
- LOGGER.debug("Event decoded {}", event.getObjects().size());
- waiting.addAll(event.getObjects());
- } else if (msg instanceof EventHandled) {
- EventHandled event = (EventHandled) msg;
- LOGGER.debug("Event handled");
- waiting.remove(event.getObject());
- }
- if (!(msg instanceof EventReceived) && waiting.isEmpty()) {
- output.addAll(queue);
- queue = null;
- }
- } else if (queue != null) {
- LOGGER.debug("Message queued");
- queue.add(new Entry(msg, promise));
- } else {
- LOGGER.debug("Message sent");
- output.add(new Entry(msg, promise));
- }
- }
- for (Entry entry : output) {
- ctx.write(entry.getMessage(), entry.getPromise());
- }
- }
-
-}