diff options
author | Vitaly Takmazov | 2018-03-21 16:39:31 +0300 |
---|---|---|
committer | Vitaly Takmazov | 2018-03-21 16:39:31 +0300 |
commit | 2920e943b68ca66a81f8ddac43dd6eed9d9a42b6 (patch) | |
tree | b969d511396d3dc1c787229b185fa8a47e4f4ecc /juick-server/src/main/java | |
parent | 01818b95286bc2bf96a4adad42c2194e487f373a (diff) |
xmpp: merge cleanup component
Diffstat (limited to 'juick-server/src/main/java')
-rw-r--r-- | juick-server/src/main/java/com/juick/server/CleaningUp.java | 60 | ||||
-rw-r--r-- | juick-server/src/main/java/com/juick/server/XMPPServer.java | 21 |
2 files changed, 21 insertions, 60 deletions
diff --git a/juick-server/src/main/java/com/juick/server/CleaningUp.java b/juick-server/src/main/java/com/juick/server/CleaningUp.java deleted file mode 100644 index 6acd4bba..00000000 --- a/juick-server/src/main/java/com/juick/server/CleaningUp.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (C) 2008-2017, Juick - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -package com.juick.server; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.scheduling.annotation.Scheduled; -import org.springframework.stereotype.Component; - -import javax.inject.Inject; -import java.time.Duration; -import java.time.Instant; - -/** - * - * @author ugnich - */ -@Component -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() { - Instant now = Instant.now(); - xmpp.getOutConnections().keySet().stream().filter(c -> Duration.between(now, c.getUpdated()).toMinutes() > TIMEOUT_MINUTES) - .forEach(c -> { - logger.info("closing idle outgoing connection to {}", c.to); - c.logoff(); - 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); - }); - } -} diff --git a/juick-server/src/main/java/com/juick/server/XMPPServer.java b/juick-server/src/main/java/com/juick/server/XMPPServer.java index a0c3ac92..53ad61a6 100644 --- a/juick-server/src/main/java/com/juick/server/XMPPServer.java +++ b/juick-server/src/main/java/com/juick/server/XMPPServer.java @@ -24,6 +24,7 @@ import com.juick.xmpp.extensions.StreamError; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import org.xmlpull.v1.XmlPullParserException; import rocks.xmpp.addr.Jid; @@ -43,6 +44,7 @@ import java.net.*; import java.security.KeyStore; import java.security.KeyStoreException; import java.security.SecureRandom; +import java.time.Duration; import java.time.Instant; import java.util.Arrays; import java.util.List; @@ -61,6 +63,8 @@ import java.util.concurrent.atomic.AtomicBoolean; public class XMPPServer implements ConnectionListener, AutoCloseable { private static final Logger logger = LoggerFactory.getLogger(XMPPServer.class); + private static final int TIMEOUT_MINUTES = 15; + @Inject public ExecutorService service; @Value("${hostname:localhost}") @@ -407,6 +411,23 @@ public class XMPPServer implements ConnectionListener, AutoCloseable { public Jid getJid() { return jid; } + @Scheduled(fixedDelay = 10000) + public void cleanUp() { + Instant now = Instant.now(); + outConnections.keySet().stream().filter(c -> Duration.between(now, c.getUpdated()).toMinutes() > TIMEOUT_MINUTES) + .forEach(c -> { + logger.info("closing idle outgoing connection to {}", c.to); + c.logoff(); + outConnections.remove(c); + }); + + inConnections.stream().filter(c -> Duration.between(now, c.updated).toMinutes() > TIMEOUT_MINUTES) + .forEach(c -> { + logger.info("closing idle incoming connection from {}", c.from); + c.closeConnection(); + inConnections.remove(c); + }); + } @PreDestroy public void preDestroy() { closeFlag.set(true); |