Mercurial Hosting > luan
changeset 1850:64b7076c635c default tip
better link_to_domain
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Sat, 22 Feb 2025 20:26:31 -0700 |
parents | 9f2680fe532b |
children | |
files | src/goodjava/webserver/handlers/DomainHandler.java src/luan/host/WebHandler.java |
diffstat | 2 files changed, 15 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/goodjava/webserver/handlers/DomainHandler.java Fri Feb 21 12:23:56 2025 -0700 +++ b/src/goodjava/webserver/handlers/DomainHandler.java Sat Feb 22 20:26:31 2025 -0700 @@ -24,6 +24,10 @@ public Handler newHandler(String domain); } + public interface HandlerCloseable extends Closeable { + public boolean isClosed(); + } + private static class MyTask extends TimerTask { private final Set<Handler> dontGc; @@ -70,6 +74,10 @@ domain = domain.toLowerCase().intern(); synchronized(domain) { Handler handler = map.get(domain); + if( handler instanceof HandlerCloseable && ((HandlerCloseable)handler).isClosed() ) { + removeHandler(domain); + handler = null; + } if( handler == null ) { //if(ref!=null) logger.info("gc "+domain); handler = factory.newHandler(domain);
--- a/src/luan/host/WebHandler.java Fri Feb 21 12:23:56 2025 -0700 +++ b/src/luan/host/WebHandler.java Sat Feb 22 20:26:31 2025 -0700 @@ -44,9 +44,10 @@ private static final Logger logger = LoggerFactory.getLogger(WebHandler.class); private static final long days30 = 1000L*60*60*24*30; - private static final class MyHandler implements Handler, Closeable { + private static final class MyHandler implements Handler, DomainHandler.HandlerCloseable { private final Handler handler; final LuanHandler luanHandler; + private boolean isClosed = false; MyHandler(Handler handler,LuanHandler luanHandler) { this.handler = handler; @@ -60,6 +61,11 @@ @Override public void close() { dontGc.remove(this); luanHandler.close(); + isClosed = true; + } + + @Override public boolean isClosed() { + return isClosed; } protected void finalize() throws Throwable {