Replace DrasylPipeline with netty-based Channel Implementations
Bei der Entwicklung von !544 (closed) zeichneten sich immer stärkere Parallelen zu den Konzepten von netty ab (ein ServerChannel, mehrere (client) Channel). Außerdem rückt die DrasylPipeline durch die (client) Channel in den Hintergrund bei der Entwicklung eigener Handler durch Endbenutzer. Daher ist es auch nicht mehr so wichtig, dass die DrasylPipeline eine auf unseren Anwendungsfall maßgeschneiderte API anbietet. Daher wurde sich dazu entschlossen, !544 (closed) umzusetzen, indem die DrasylPipeline durch eigene netty-basierte ServerChannel- und Channel-Implementationen ersetzt wird. Die zu wartende Code-Base sollte dadurch abnehmen, da wir eigene Implementationen durch netty ersetzen können.
Dieser MR ist der erste Schritt für diese Migration:
Es wird eine neue DrasylNode-Implementation geben, welcher einen ServerChannel anstelle der DrasylPipeline verwendet. Dazu wurden einige Migration-Wrapper-Klassen geschrieben, die die Verwendung der bestehenden Handler in netty ermöglichen. In einem späteren MR soll diese Handler dann durch native netty-Handler migriertn werden.
TODOs:
-
Child Channel Garbage Collection -
Migrate VisualPipeline to ChannelPipeline? -
Delete DrasylPipeline -
Re-add DrasylNodeTest -
Re-add PluginsManager to DrasylNode? -
Tests! -
Comments! -
Remove RxJava? -
Remove Unpooled ByteBufs? -
Use ChannelGroup to reduce resolve-Events? -
GroupsPlugin broken as Messages are not longer (de)serialized as MessageSerializer has been moved to child channel -
TCP-Server/Client PendingWriteQueue?
Known Breaking Changes:
-
DrasylNode#pipeline()
now returns ChannelPipeline -
DrasylNode#start()
futures now completes non-exceptionall on node start error (NodeUnrecoverableErrorEvent
will still be emitted).
Closes #154 (closed) #122 (closed) #80 (closed) #133 (closed) #144 (closed) #156 (closed)
https://sonarcloud.io/dashboard?branch=netty-codec&id=org.drasyl%3Adrasyl-parent