Mercurial Hosting > luan
comparison src/goodjava/webserver/handlers/DomainHandler.java @ 1850:64b7076c635c
better link_to_domain
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Sat, 22 Feb 2025 20:26:31 -0700 |
parents | 9d9683e76496 |
children |
comparison
equal
deleted
inserted
replaced
1849:9f2680fe532b | 1850:64b7076c635c |
---|---|
20 public final class DomainHandler implements Handler { | 20 public final class DomainHandler implements Handler { |
21 private static final Logger logger = LoggerFactory.getLogger(DomainHandler.class); | 21 private static final Logger logger = LoggerFactory.getLogger(DomainHandler.class); |
22 | 22 |
23 public interface Factory { | 23 public interface Factory { |
24 public Handler newHandler(String domain); | 24 public Handler newHandler(String domain); |
25 } | |
26 | |
27 public interface HandlerCloseable extends Closeable { | |
28 public boolean isClosed(); | |
25 } | 29 } |
26 | 30 |
27 private static class MyTask extends TimerTask { | 31 private static class MyTask extends TimerTask { |
28 private final Set<Handler> dontGc; | 32 private final Set<Handler> dontGc; |
29 | 33 |
68 | 72 |
69 public Handler getHandler(String domain) { | 73 public Handler getHandler(String domain) { |
70 domain = domain.toLowerCase().intern(); | 74 domain = domain.toLowerCase().intern(); |
71 synchronized(domain) { | 75 synchronized(domain) { |
72 Handler handler = map.get(domain); | 76 Handler handler = map.get(domain); |
77 if( handler instanceof HandlerCloseable && ((HandlerCloseable)handler).isClosed() ) { | |
78 removeHandler(domain); | |
79 handler = null; | |
80 } | |
73 if( handler == null ) { | 81 if( handler == null ) { |
74 //if(ref!=null) logger.info("gc "+domain); | 82 //if(ref!=null) logger.info("gc "+domain); |
75 handler = factory.newHandler(domain); | 83 handler = factory.newHandler(domain); |
76 if( handler == null ) | 84 if( handler == null ) |
77 return null; | 85 return null; |