diff --git a/Dorkbox-Network/src/dorkbox/network/connection/wrapper/ChannelLocalWrapper.java b/Dorkbox-Network/src/dorkbox/network/connection/wrapper/ChannelLocalWrapper.java
index 7d5a8cdd..8b829e4b 100644
--- a/Dorkbox-Network/src/dorkbox/network/connection/wrapper/ChannelLocalWrapper.java
+++ b/Dorkbox-Network/src/dorkbox/network/connection/wrapper/ChannelLocalWrapper.java
@@ -1,114 +1,129 @@
package dorkbox.network.connection.wrapper;
-import io.netty.channel.Channel;
-import io.netty.channel.EventLoop;
-import io.netty.channel.local.LocalAddress;
-
-import java.util.concurrent.atomic.AtomicBoolean;
-
-import org.bouncycastle.crypto.params.ParametersWithIV;
-
-import dorkbox.network.connection.ConnectionPointWriter;
import dorkbox.network.connection.Connection;
+import dorkbox.network.connection.ConnectionPointWriter;
import dorkbox.network.connection.EndPoint;
import dorkbox.network.connection.ISessionManager;
import dorkbox.network.connection.registration.MetaChannel;
+import io.netty.channel.Channel;
+import io.netty.channel.EventLoop;
+import io.netty.channel.local.LocalAddress;
+import org.bouncycastle.crypto.params.ParametersWithIV;
-public class ChannelLocalWrapper implements ChannelWrapper, ConnectionPointWriter {
+import java.util.concurrent.atomic.AtomicBoolean;
+
+public
+class ChannelLocalWrapper implements ChannelWrapper, ConnectionPointWriter {
private final Channel channel;
private String remoteAddress;
- private AtomicBoolean shouldFlush = new AtomicBoolean(false);
+ private final AtomicBoolean shouldFlush = new AtomicBoolean(false);
- public ChannelLocalWrapper(MetaChannel metaChannel) {
+ public
+ ChannelLocalWrapper(MetaChannel metaChannel) {
this.channel = metaChannel.localChannel;
}
- /**
- * Initialize the connection with any extra info that is needed but was unavailable at the channel construction.
- */
- @Override
- public final void init() {
- this.remoteAddress = ((LocalAddress) this.channel.remoteAddress()).id();
- }
-
/**
* Write an object to the underlying channel
*/
@Override
- public void write(Object object) {
+ public
+ void write(Object object) {
this.channel.write(object);
this.shouldFlush.set(true);
}
@Override
- public void waitForWriteToComplete() {
+ public
+ void waitForWriteToComplete() {
// it's immediate, since it's in the same JVM.
}
+ @Override
+ public
+ ConnectionPointWriter tcp() {
+ return this;
+ }
+
+ @Override
+ public
+ ConnectionPointWriter udp() {
+ return this;
+ }
+
+ @Override
+ public
+ ConnectionPointWriter udt() {
+ return this;
+ }
+
+ /**
+ * Initialize the connection with any extra info that is needed but was unavailable at the channel construction.
+ */
+ @Override
+ public final
+ void init() {
+ this.remoteAddress = ((LocalAddress) this.channel.remoteAddress()).id();
+ }
+
/**
* Flushes the contents of the LOCAL pipes to the actual transport.
*/
@Override
- public void flush() {
+ public
+ void flush() {
if (this.shouldFlush.compareAndSet(true, false)) {
this.channel.flush();
}
}
@Override
- public void close(Connection connection, ISessionManager sessionManager) {
+ public
+ EventLoop getEventLoop() {
+ return this.channel.eventLoop();
+ }
+
+ @Override
+ public
+ ParametersWithIV cryptoParameters() {
+ return null;
+ }
+
+ @Override
+ public final
+ String getRemoteHost() {
+ return this.remoteAddress;
+ }
+
+ @Override
+ public
+ void close(Connection connection, ISessionManager sessionManager) {
long maxShutdownWaitTimeInMilliSeconds = EndPoint.maxShutdownWaitTimeInMilliSeconds;
this.shouldFlush.set(false);
// Wait until the connection is closed or the connection attempt fails.
- this.channel.close().awaitUninterruptibly(maxShutdownWaitTimeInMilliSeconds);
+ this.channel.close()
+ .awaitUninterruptibly(maxShutdownWaitTimeInMilliSeconds);
}
@Override
- public ConnectionPointWriter tcp() {
- return this;
- }
-
- @Override
- public ConnectionPointWriter udp() {
- return this;
- }
-
- @Override
- public ConnectionPointWriter udt() {
- return this;
- }
-
- @Override
- public EventLoop getEventLoop() {
- return this.channel.eventLoop();
- }
-
- @Override
- public ParametersWithIV cryptoParameters() {
- return null;
- }
-
- @Override
- public final String getRemoteHost() {
- return this.remoteAddress;
- }
-
- @Override
- public int id() {
+ public
+ int id() {
return this.channel.hashCode();
}
@Override
- public int hashCode() {
+ public
+ int hashCode() {
return this.channel.hashCode();
}
@Override
- public boolean equals(Object obj) {
+ public
+ boolean equals(Object obj) {
if (this == obj) {
return true;
}
@@ -123,7 +138,8 @@ public class ChannelLocalWrapper implements ChannelWrapper, ConnectionPointWrite
if (other.remoteAddress != null) {
return false;
}
- } else if (!this.remoteAddress.equals(other.remoteAddress)) {
+ }
+ else if (!this.remoteAddress.equals(other.remoteAddress)) {
return false;
}
return true;
diff --git a/Dorkbox-Network/src/dorkbox/network/connection/wrapper/ChannelNetwork.java b/Dorkbox-Network/src/dorkbox/network/connection/wrapper/ChannelNetwork.java
index 07969279..e6f636f9 100644
--- a/Dorkbox-Network/src/dorkbox/network/connection/wrapper/ChannelNetwork.java
+++ b/Dorkbox-Network/src/dorkbox/network/connection/wrapper/ChannelNetwork.java
@@ -1,21 +1,22 @@
package dorkbox.network.connection.wrapper;
+import dorkbox.network.connection.ConnectionPointWriter;
import io.netty.channel.Channel;
import io.netty.channel.ChannelFuture;
import java.util.concurrent.atomic.AtomicBoolean;
-import dorkbox.network.connection.ConnectionPointWriter;
+public
+class ChannelNetwork implements ConnectionPointWriter {
-public class ChannelNetwork implements ConnectionPointWriter {
+ private final Channel channel;
+ private final AtomicBoolean shouldFlush = new AtomicBoolean(false);
private volatile ChannelFuture lastWriteFuture;
- private final Channel channel;
-
- private AtomicBoolean shouldFlush = new AtomicBoolean(false);
- public ChannelNetwork(Channel channel) {
+ public
+ ChannelNetwork(Channel channel) {
this.channel = channel;
}
@@ -23,7 +24,8 @@ public class ChannelNetwork implements ConnectionPointWriter {
* Write an object to the underlying channel
*/
@Override
- public void write(Object object) {
+ public
+ void write(Object object) {
this.lastWriteFuture = this.channel.write(object);
this.shouldFlush.set(true);
}
@@ -33,20 +35,23 @@ public class ChannelNetwork implements ConnectionPointWriter {
* DO NOT use this in the same thread as receiving messages! It will deadlock.
*/
@Override
- public void waitForWriteToComplete() {
+ public
+ void waitForWriteToComplete() {
if (this.lastWriteFuture != null) {
this.lastWriteFuture.awaitUninterruptibly();
}
}
@Override
- public void flush() {
+ public
+ void flush() {
if (this.shouldFlush.compareAndSet(true, false)) {
this.channel.flush();
}
}
- public void close(long maxShutdownWaitTimeInMilliSeconds) {
+ public
+ void close(long maxShutdownWaitTimeInMilliSeconds) {
// Wait until all messages are flushed before closing the channel.
if (this.lastWriteFuture != null) {
this.lastWriteFuture.awaitUninterruptibly(maxShutdownWaitTimeInMilliSeconds);
@@ -54,10 +59,12 @@ public class ChannelNetwork implements ConnectionPointWriter {
}
this.shouldFlush.set(false);
- this.channel.close().awaitUninterruptibly(maxShutdownWaitTimeInMilliSeconds);
+ this.channel.close()
+ .awaitUninterruptibly(maxShutdownWaitTimeInMilliSeconds);
}
- public int id() {
+ public
+ int id() {
return this.channel.hashCode();
}
}
diff --git a/Dorkbox-Network/src/dorkbox/network/connection/wrapper/ChannelNetworkUdp.java b/Dorkbox-Network/src/dorkbox/network/connection/wrapper/ChannelNetworkUdp.java
index 56153a95..462a28b7 100644
--- a/Dorkbox-Network/src/dorkbox/network/connection/wrapper/ChannelNetworkUdp.java
+++ b/Dorkbox-Network/src/dorkbox/network/connection/wrapper/ChannelNetworkUdp.java
@@ -1,18 +1,19 @@
package dorkbox.network.connection.wrapper;
+import dorkbox.network.connection.UdpServer;
+import dorkbox.network.util.exceptions.NetException;
import io.netty.channel.Channel;
import java.net.InetSocketAddress;
-import dorkbox.network.connection.UdpServer;
-import dorkbox.network.util.exceptions.NetException;
-
-public class ChannelNetworkUdp extends ChannelNetwork {
+public
+class ChannelNetworkUdp extends ChannelNetwork {
private final InetSocketAddress udpRemoteAddress;
private final UdpServer udpServer;
- public ChannelNetworkUdp(Channel channel, InetSocketAddress udpRemoteAddress, UdpServer udpServer) {
+ public
+ ChannelNetworkUdp(Channel channel, InetSocketAddress udpRemoteAddress, UdpServer udpServer) {
super(channel);
if (udpRemoteAddress == null) {
@@ -24,13 +25,15 @@ public class ChannelNetworkUdp extends ChannelNetwork {
}
@Override
- public void write(Object object) {
+ public
+ void write(Object object) {
// this shoots out the SERVER pipeline, which is SLIGHTLY different!
super.write(new UdpWrapper(object, udpRemoteAddress));
}
@Override
- public void close(long maxShutdownWaitTimeInMilliSeconds) {
+ public
+ void close(long maxShutdownWaitTimeInMilliSeconds) {
// we ONLY want to close the UDP channel when we are STOPPING the server, otherwise we close the UDP channel
// that listens for new connections! SEE Server.close().
// super.close(maxShutdownWaitTimeInMilliSeconds);
diff --git a/Dorkbox-Network/src/dorkbox/network/connection/wrapper/ChannelNetworkWrapper.java b/Dorkbox-Network/src/dorkbox/network/connection/wrapper/ChannelNetworkWrapper.java
index d1a14661..94d75370 100644
--- a/Dorkbox-Network/src/dorkbox/network/connection/wrapper/ChannelNetworkWrapper.java
+++ b/Dorkbox-Network/src/dorkbox/network/connection/wrapper/ChannelNetworkWrapper.java
@@ -1,21 +1,16 @@
package dorkbox.network.connection.wrapper;
+import dorkbox.network.connection.*;
+import dorkbox.network.connection.registration.MetaChannel;
import io.netty.channel.Channel;
import io.netty.channel.EventLoop;
-
-import java.net.InetSocketAddress;
-
import org.bouncycastle.crypto.params.KeyParameter;
import org.bouncycastle.crypto.params.ParametersWithIV;
-import dorkbox.network.connection.ConnectionPointWriter;
-import dorkbox.network.connection.Connection;
-import dorkbox.network.connection.EndPoint;
-import dorkbox.network.connection.ISessionManager;
-import dorkbox.network.connection.UdpServer;
-import dorkbox.network.connection.registration.MetaChannel;
+import java.net.InetSocketAddress;
-public class ChannelNetworkWrapper implements ChannelWrapper {
+public
+class ChannelNetworkWrapper implements ChannelWrapper {
private final ChannelNetwork tcp;
private final ChannelNetwork udp;
@@ -33,7 +28,8 @@ public class ChannelNetworkWrapper implements ChannelWrapper {
/**
* @param udpServer is null when created by the client, non-null when created by the server
*/
- public ChannelNetworkWrapper(MetaChannel metaChannel, UdpServer udpServer) {
+ public
+ ChannelNetworkWrapper(MetaChannel metaChannel, UdpServer udpServer) {
Channel tcpChannel = metaChannel.tcpChannel;
this.eventLoop = tcpChannel.eventLoop();
@@ -43,21 +39,25 @@ public class ChannelNetworkWrapper implements ChannelWrapper {
if (metaChannel.udpChannel != null) {
if (metaChannel.udpRemoteAddress != null) {
this.udp = new ChannelNetworkUdp(metaChannel.udpChannel, metaChannel.udpRemoteAddress, udpServer);
- } else {
+ }
+ else {
this.udp = new ChannelNetwork(metaChannel.udpChannel);
}
- } else {
+ }
+ else {
this.udp = null;
}
if (metaChannel.udtChannel != null) {
this.udt = new ChannelNetwork(metaChannel.udtChannel);
- } else {
+ }
+ else {
this.udt = null;
}
- this.remoteAddress = ((InetSocketAddress)tcpChannel.remoteAddress()).getAddress().getHostAddress();
+ this.remoteAddress = ((InetSocketAddress) tcpChannel.remoteAddress()).getAddress()
+ .getHostAddress();
this.remotePublicKeyChanged = metaChannel.changedRemoteKey;
// AES key & IV (only for networked connections)
@@ -65,23 +65,44 @@ public class ChannelNetworkWrapper implements ChannelWrapper {
// TODO: have to be able to get a NEW IV, so we can rotate keys!
}
+ public final
+ boolean remoteKeyChanged() {
+ return this.remotePublicKeyChanged;
+ }
+
+ @Override
+ public
+ ConnectionPointWriter tcp() {
+ return this.tcp;
+ }
+
+ @Override
+ public
+ ConnectionPointWriter udp() {
+ return this.udp;
+ }
+
+ @Override
+ public
+ ConnectionPointWriter udt() {
+ return this.udt;
+ }
+
/**
* Initialize the connection with any extra info that is needed but was unavailable at the channel construction.
*/
@Override
- public final void init() {
+ public final
+ void init() {
// nothing to do.
}
- public final boolean remoteKeyChanged() {
- return this.remotePublicKeyChanged;
- }
-
/**
* Flushes the contents of the TCP/UDP/UDT/etc pipes to the actual transport.
*/
@Override
- public void flush() {
+ public
+ void flush() {
this.tcp.flush();
if (this.udp != null) {
@@ -94,38 +115,27 @@ public class ChannelNetworkWrapper implements ChannelWrapper {
}
@Override
- public EventLoop getEventLoop() {
+ public
+ EventLoop getEventLoop() {
return this.eventLoop;
}
@Override
- public ParametersWithIV cryptoParameters() {
+ public
+ ParametersWithIV cryptoParameters() {
return this.cryptoAesKeyAndIV;
}
@Override
- public ConnectionPointWriter tcp() {
- return this.tcp;
- }
-
- @Override
- public ConnectionPointWriter udp() {
- return this.udp;
- }
-
- @Override
- public ConnectionPointWriter udt() {
- return this.udt;
- }
-
- @Override
- public String getRemoteHost() {
+ public
+ String getRemoteHost() {
return this.remoteAddress;
}
@Override
- public void close(final Connection connection, final ISessionManager sessionManager) {
+ public
+ void close(final Connection connection, final ISessionManager sessionManager) {
long maxShutdownWaitTimeInMilliSeconds = EndPoint.maxShutdownWaitTimeInMilliSeconds;
this.tcp.close(maxShutdownWaitTimeInMilliSeconds);
@@ -143,17 +153,20 @@ public class ChannelNetworkWrapper implements ChannelWrapper {
}
@Override
- public String toString() {
- return "NetworkConnection [" + getRemoteHost() + "]";
- }
-
- @Override
- public int id() {
+ public
+ int id() {
return this.tcp.id();
}
@Override
- public boolean equals(Object obj) {
+ public
+ int hashCode() {
+ return this.remoteAddress.hashCode();
+ }
+
+ @Override
+ public
+ boolean equals(Object obj) {
if (this == obj) {
return true;
}
@@ -169,14 +182,16 @@ public class ChannelNetworkWrapper implements ChannelWrapper {
if (other.remoteAddress != null) {
return false;
}
- } else if (!this.remoteAddress.equals(other.remoteAddress)) {
+ }
+ else if (!this.remoteAddress.equals(other.remoteAddress)) {
return false;
}
return true;
}
@Override
- public int hashCode() {
- return this.remoteAddress.hashCode();
+ public
+ String toString() {
+ return "NetworkConnection [" + getRemoteHost() + "]";
}
-}
\ No newline at end of file
+}
diff --git a/Dorkbox-Network/src/dorkbox/network/connection/wrapper/ChannelNull.java b/Dorkbox-Network/src/dorkbox/network/connection/wrapper/ChannelNull.java
index 69579e13..f538d392 100644
--- a/Dorkbox-Network/src/dorkbox/network/connection/wrapper/ChannelNull.java
+++ b/Dorkbox-Network/src/dorkbox/network/connection/wrapper/ChannelNull.java
@@ -3,21 +3,26 @@ package dorkbox.network.connection.wrapper;
import dorkbox.network.connection.ConnectionPoint;
import dorkbox.network.connection.ConnectionPointWriter;
-public class ChannelNull implements ConnectionPointWriter {
+public
+class ChannelNull implements ConnectionPointWriter {
private static final ConnectionPoint INSTANCE = new ChannelNull();
- public static ConnectionPoint get() {
+
+ public static
+ ConnectionPoint get() {
return INSTANCE;
}
- private ChannelNull() {
+ private
+ ChannelNull() {
}
/**
* Write an object to the underlying channel
*/
@Override
- public void write(Object object) {
+ public
+ void write(Object object) {
}
/**
@@ -25,10 +30,12 @@ public class ChannelNull implements ConnectionPointWriter {
* DO NOT use this in the same thread as receiving messages! It will deadlock.
*/
@Override
- public void waitForWriteToComplete() {
+ public
+ void waitForWriteToComplete() {
}
@Override
- public void flush() {
+ public
+ void flush() {
}
}
diff --git a/Dorkbox-Network/src/dorkbox/network/connection/wrapper/ChannelWrapper.java b/Dorkbox-Network/src/dorkbox/network/connection/wrapper/ChannelWrapper.java
index 0418ca07..d6c25cdb 100644
--- a/Dorkbox-Network/src/dorkbox/network/connection/wrapper/ChannelWrapper.java
+++ b/Dorkbox-Network/src/dorkbox/network/connection/wrapper/ChannelWrapper.java
@@ -1,46 +1,47 @@
package dorkbox.network.connection.wrapper;
+import dorkbox.network.connection.Connection;
+import dorkbox.network.connection.ConnectionPointWriter;
+import dorkbox.network.connection.ISessionManager;
import io.netty.channel.EventLoop;
-
import org.bouncycastle.crypto.params.ParametersWithIV;
-import dorkbox.network.connection.ConnectionPointWriter;
-import dorkbox.network.connection.Connection;
-import dorkbox.network.connection.ISessionManager;
+public
+interface ChannelWrapper {
-public interface ChannelWrapper {
+ ConnectionPointWriter tcp();
- public ConnectionPointWriter tcp();
- public ConnectionPointWriter udp();
- public ConnectionPointWriter udt();
+ ConnectionPointWriter udp();
+
+ ConnectionPointWriter udt();
/**
* Initialize the connection with any extra info that is needed but was unavailable at the channel construction.
*/
- public void init();
+ void init();
/**
* Flushes the contents of the TCP/UDP/UDT/etc pipes to the actual transport.
*/
- public void flush();
+ void flush();
- public EventLoop getEventLoop();
+ EventLoop getEventLoop();
- public ParametersWithIV cryptoParameters();
+ ParametersWithIV cryptoParameters();
/**
* @return the remote host (can be local, tcp, udp, udt)
*/
- public String getRemoteHost();
+ String getRemoteHost();
- public void close(final Connection connection, final ISessionManager sessionManager);
+ void close(final Connection connection, final ISessionManager sessionManager);
+
+ int id();
@Override
- public String toString();
-
- public int id();
+ boolean equals(Object obj);
@Override
- public boolean equals(Object obj);
-}
\ No newline at end of file
+ String toString();
+}
diff --git a/Dorkbox-Network/src/dorkbox/network/connection/wrapper/UdpWrapper.java b/Dorkbox-Network/src/dorkbox/network/connection/wrapper/UdpWrapper.java
index da6e58b9..9e846f13 100644
--- a/Dorkbox-Network/src/dorkbox/network/connection/wrapper/UdpWrapper.java
+++ b/Dorkbox-Network/src/dorkbox/network/connection/wrapper/UdpWrapper.java
@@ -2,21 +2,25 @@ package dorkbox.network.connection.wrapper;
import java.net.InetSocketAddress;
-public class UdpWrapper {
+public
+class UdpWrapper {
private final Object object;
private final InetSocketAddress remoteAddress;
- public UdpWrapper(Object object, InetSocketAddress remoteAddress2) {
+ public
+ UdpWrapper(Object object, InetSocketAddress remoteAddress2) {
this.object = object;
this.remoteAddress = remoteAddress2;
}
- public Object object() {
+ public
+ Object object() {
return this.object;
}
- public InetSocketAddress remoteAddress() {
+ public
+ InetSocketAddress remoteAddress() {
return this.remoteAddress;
}
}