aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/traccar/BasePipelineFactory.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/traccar/BasePipelineFactory.java')
-rw-r--r--src/main/java/org/traccar/BasePipelineFactory.java97
1 files changed, 20 insertions, 77 deletions
diff --git a/src/main/java/org/traccar/BasePipelineFactory.java b/src/main/java/org/traccar/BasePipelineFactory.java
index ca4a4ae63..40360cca7 100644
--- a/src/main/java/org/traccar/BasePipelineFactory.java
+++ b/src/main/java/org/traccar/BasePipelineFactory.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2012 - 2023 Anton Tananaev (anton@traccar.org)
+ * Copyright 2012 - 2024 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.
@@ -25,36 +25,13 @@ import io.netty.channel.ChannelPipeline;
import io.netty.handler.timeout.IdleStateHandler;
import org.traccar.config.Config;
import org.traccar.config.Keys;
-import org.traccar.handler.AcknowledgementHandler;
-import org.traccar.handler.ComputedAttributesHandler;
-import org.traccar.handler.CopyAttributesHandler;
-import org.traccar.handler.DefaultDataHandler;
-import org.traccar.handler.DistanceHandler;
-import org.traccar.handler.EngineHoursHandler;
-import org.traccar.handler.FilterHandler;
-import org.traccar.handler.GeocoderHandler;
-import org.traccar.handler.GeofenceHandler;
-import org.traccar.handler.GeolocationHandler;
-import org.traccar.handler.HemisphereHandler;
-import org.traccar.handler.MotionHandler;
-import org.traccar.handler.NetworkForwarderHandler;
-import org.traccar.handler.NetworkMessageHandler;
-import org.traccar.handler.OpenChannelHandler;
-import org.traccar.handler.RemoteAddressHandler;
-import org.traccar.handler.SpeedLimitHandler;
-import org.traccar.handler.StandardLoggingHandler;
-import org.traccar.handler.TimeHandler;
-import org.traccar.handler.events.AlertEventHandler;
-import org.traccar.handler.events.BehaviorEventHandler;
-import org.traccar.handler.events.CommandResultEventHandler;
-import org.traccar.handler.events.DriverEventHandler;
-import org.traccar.handler.events.FuelEventHandler;
-import org.traccar.handler.events.GeofenceEventHandler;
-import org.traccar.handler.events.IgnitionEventHandler;
-import org.traccar.handler.events.MaintenanceEventHandler;
-import org.traccar.handler.events.MediaEventHandler;
-import org.traccar.handler.events.MotionEventHandler;
-import org.traccar.handler.events.OverspeedEventHandler;
+import org.traccar.handler.network.AcknowledgementHandler;
+import org.traccar.handler.network.MainEventHandler;
+import org.traccar.handler.network.NetworkForwarderHandler;
+import org.traccar.handler.network.NetworkMessageHandler;
+import org.traccar.handler.network.OpenChannelHandler;
+import org.traccar.handler.network.RemoteAddressHandler;
+import org.traccar.handler.network.StandardLoggingHandler;
import java.util.Map;
@@ -83,15 +60,7 @@ public abstract class BasePipelineFactory extends ChannelInitializer<Channel> {
protected abstract void addProtocolHandlers(PipelineBuilder pipeline);
- @SafeVarargs
- private void addHandlers(ChannelPipeline pipeline, Class<? extends ChannelHandler>... handlerClasses) {
- for (Class<? extends ChannelHandler> handlerClass : handlerClasses) {
- if (handlerClass != null) {
- pipeline.addLast(injector.getInstance(handlerClass));
- }
- }
- }
-
+ @SuppressWarnings("unchecked")
public static <T extends ChannelHandler> T getHandler(ChannelPipeline pipeline, Class<T> clazz) {
for (Map.Entry<String, ChannelHandler> handlerEntry : pipeline) {
ChannelHandler handler = handlerEntry.getValue();
@@ -107,6 +76,11 @@ public abstract class BasePipelineFactory extends ChannelInitializer<Channel> {
return null;
}
+ private <T> T injectMembers(T object) {
+ injector.injectMembers(object);
+ return object;
+ }
+
@Override
protected void initChannel(Channel channel) {
final ChannelPipeline pipeline = channel.pipeline();
@@ -119,15 +93,10 @@ public abstract class BasePipelineFactory extends ChannelInitializer<Channel> {
pipeline.addLast(new OpenChannelHandler(connector));
if (config.hasKey(Keys.SERVER_FORWARD)) {
int port = config.getInteger(Keys.PROTOCOL_PORT.withPrefix(protocol));
- var handler = new NetworkForwarderHandler(port);
- injector.injectMembers(handler);
- pipeline.addLast(handler);
+ pipeline.addLast(injectMembers(new NetworkForwarderHandler(port)));
}
pipeline.addLast(new NetworkMessageHandler());
-
- var loggingHandler = new StandardLoggingHandler(protocol);
- injector.injectMembers(loggingHandler);
- pipeline.addLast(loggingHandler);
+ pipeline.addLast(injectMembers(new StandardLoggingHandler(protocol)));
if (!connector.isDatagram() && !config.getBoolean(Keys.SERVER_INSTANT_ACKNOWLEDGEMENT)) {
pipeline.addLast(new AcknowledgementHandler());
@@ -135,7 +104,7 @@ public abstract class BasePipelineFactory extends ChannelInitializer<Channel> {
addProtocolHandlers(handler -> {
if (handler instanceof BaseProtocolDecoder || handler instanceof BaseProtocolEncoder) {
- injector.injectMembers(handler);
+ injectMembers(handler);
} else {
if (handler instanceof ChannelInboundHandler) {
handler = new WrapperInboundHandler((ChannelInboundHandler) handler);
@@ -146,35 +115,9 @@ public abstract class BasePipelineFactory extends ChannelInitializer<Channel> {
pipeline.addLast(handler);
});
- addHandlers(
- pipeline,
- TimeHandler.class,
- GeolocationHandler.class,
- HemisphereHandler.class,
- DistanceHandler.class,
- RemoteAddressHandler.class,
- FilterHandler.class,
- GeofenceHandler.class,
- GeocoderHandler.class,
- SpeedLimitHandler.class,
- MotionHandler.class,
- CopyAttributesHandler.class,
- EngineHoursHandler.class,
- ComputedAttributesHandler.class,
- PositionForwardingHandler.class,
- DefaultDataHandler.class,
- MediaEventHandler.class,
- CommandResultEventHandler.class,
- OverspeedEventHandler.class,
- BehaviorEventHandler.class,
- FuelEventHandler.class,
- MotionEventHandler.class,
- GeofenceEventHandler.class,
- AlertEventHandler.class,
- IgnitionEventHandler.class,
- MaintenanceEventHandler.class,
- DriverEventHandler.class,
- MainEventHandler.class);
+ pipeline.addLast(injector.getInstance(RemoteAddressHandler.class));
+ pipeline.addLast(injector.getInstance(ProcessingHandler.class));
+ pipeline.addLast(injector.getInstance(MainEventHandler.class));
}
}