From 0c68eb43910b49669ace45de51aa2a4ea3d6f6f0 Mon Sep 17 00:00:00 2001 From: Vitaly Takmazov Date: Mon, 9 Oct 2017 14:46:43 +0300 Subject: xmpp: Java 8 Time API --- .../main/java/com/juick/components/CleaningUp.java | 37 +++++++++++----------- 1 file changed, 18 insertions(+), 19 deletions(-) (limited to 'juick-xmpp/src/main/java/com/juick/components/CleaningUp.java') diff --git a/juick-xmpp/src/main/java/com/juick/components/CleaningUp.java b/juick-xmpp/src/main/java/com/juick/components/CleaningUp.java index 067af6e8..16747ea4 100644 --- a/juick-xmpp/src/main/java/com/juick/components/CleaningUp.java +++ b/juick-xmpp/src/main/java/com/juick/components/CleaningUp.java @@ -23,6 +23,8 @@ import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import javax.inject.Inject; +import java.time.Duration; +import java.time.Instant; /** * @@ -33,29 +35,26 @@ public class CleaningUp { private static final Logger logger = LoggerFactory.getLogger(CleaningUp.class); + private static final int TIMEOUT_MINUTES = 15; + @Inject XMPPServer xmpp; @Scheduled(fixedDelay = 10000) public void cleanUp() { - long now = System.currentTimeMillis(); - - xmpp.getOutConnections().stream().filter(c -> { - int inactive = (int) ((double) (now - c.tsLocalData) / 1000.0); - return inactive > 900; - }).forEach(c -> { - logger.info("closing idle outgoing connection to {}", c.to); - c.closeConnection(); - xmpp.getOutConnections().remove(c); - }); - - xmpp.getInConnections().stream().filter(c -> { - int inactive = (int) ((double) (now - c.tsRemoteData) / 1000.0); - return inactive > 900; - }).forEach(c -> { - logger.info("closing idle incoming connection from {}", c.from); - c.closeConnection(); - xmpp.getInConnections().remove(c); - }); + Instant now = Instant.now(); + xmpp.getOutConnections().stream().filter(c -> Duration.between(now, c.updated).toMinutes() > TIMEOUT_MINUTES) + .forEach(c -> { + logger.info("closing idle outgoing connection to {}", c.to); + c.closeConnection(); + xmpp.getOutConnections().remove(c); + }); + + xmpp.getInConnections().stream().filter(c -> Duration.between(now, c.updated).toMinutes() > TIMEOUT_MINUTES) + .forEach(c -> { + logger.info("closing idle incoming connection from {}", c.from); + c.closeConnection(); + xmpp.getInConnections().remove(c); + }); } } -- cgit v1.2.3