X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Firc%2FDefaultConnection.java;fp=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Firc%2FDefaultConnection.java;h=876aefb81d6ce4a4c7a56c99f342fba33cf6d67d;hb=bb4bd4ceb3bc78c7e7ea8f4d6b827e0715c57561;hp=8fe4c4b2057fe0f9416353bff45222c835144532;hpb=f96ea38946952e2a06ccc0d64a92e346b8761f85;p=xudocci.git diff --git a/src/main/java/net/pterodactylus/irc/DefaultConnection.java b/src/main/java/net/pterodactylus/irc/DefaultConnection.java index 8fe4c4b..876aefb 100644 --- a/src/main/java/net/pterodactylus/irc/DefaultConnection.java +++ b/src/main/java/net/pterodactylus/irc/DefaultConnection.java @@ -30,11 +30,14 @@ import java.io.InputStreamReader; import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.net.Socket; +import java.time.Duration; +import java.time.Instant; import java.util.ArrayList; import java.util.List; import java.util.Optional; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicReference; import javax.net.SocketFactory; @@ -120,6 +123,7 @@ public class DefaultConnection extends AbstractExecutionThreadService implements /** Whether the connection has already been established. */ private final AtomicBoolean established = new AtomicBoolean(); + private final AtomicReference connectionTime = new AtomicReference<>(); /** * Creates a new connection. @@ -230,6 +234,13 @@ public class DefaultConnection extends AbstractExecutionThreadService implements } } + @Override + public java.util.Optional getUptime() { + return established.get() ? + java.util.Optional.of(Duration.between(connectionTime.get(), Instant.now())) : + java.util.Optional.empty(); + } + // // ABSTRACTEXECUTIONTHREADSERVICE METHODS // @@ -358,6 +369,7 @@ public class DefaultConnection extends AbstractExecutionThreadService implements @Subscribe public void connectionEstablished(ConnectionEstablished connectionEstablished) { if (connectionEstablished.connection() == this) { + connectionTime.set(Instant.now()); established.set(true); } }