annotate src/luan/modules/http/LuanDomainHandler.java @ 1578:c922446f53aa

immutable threading
author Franklin Schmidt <fschmidt@gmail.com>
date Mon, 08 Feb 2021 14:16:19 -0700
parents 8fbcc4747091
children 46cf5137cb6b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1315
5763597ca5c0 add DomainHandler
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
1 package luan.modules.http;
5763597ca5c0 add DomainHandler
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
2
1402
27efb1fcbcb5 move luan.lib to goodjava
Franklin Schmidt <fschmidt@gmail.com>
parents: 1400
diff changeset
3 import goodjava.webserver.Request;
27efb1fcbcb5 move luan.lib to goodjava
Franklin Schmidt <fschmidt@gmail.com>
parents: 1400
diff changeset
4 import goodjava.webserver.Response;
27efb1fcbcb5 move luan.lib to goodjava
Franklin Schmidt <fschmidt@gmail.com>
parents: 1400
diff changeset
5 import goodjava.webserver.Handler;
27efb1fcbcb5 move luan.lib to goodjava
Franklin Schmidt <fschmidt@gmail.com>
parents: 1400
diff changeset
6 import goodjava.webserver.handlers.DomainHandler;
1333
25746915a241 merge Luan and LuanState
Franklin Schmidt <fschmidt@gmail.com>
parents: 1332
diff changeset
7 import luan.Luan;
1315
5763597ca5c0 add DomainHandler
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
8 import luan.LuanTable;
1350
d8754a50adf1 better reset_luan
Franklin Schmidt <fschmidt@gmail.com>
parents: 1347
diff changeset
9 import luan.LuanFunction;
1315
5763597ca5c0 add DomainHandler
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
10 import luan.LuanException;
1454
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1402
diff changeset
11 import luan.modules.logging.LuanLogger;
1315
5763597ca5c0 add DomainHandler
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
12
5763597ca5c0 add DomainHandler
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
13
1329
5a39b006acd1 make LuanDomainHandler flexible
Franklin Schmidt <fschmidt@gmail.com>
parents: 1328
diff changeset
14 public class LuanDomainHandler implements Handler, DomainHandler.Factory {
1315
5763597ca5c0 add DomainHandler
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
15
1333
25746915a241 merge Luan and LuanState
Franklin Schmidt <fschmidt@gmail.com>
parents: 1332
diff changeset
16 private final Luan luanInit;
1329
5a39b006acd1 make LuanDomainHandler flexible
Franklin Schmidt <fschmidt@gmail.com>
parents: 1328
diff changeset
17 private final DomainHandler domainHandler = new DomainHandler(this);
1315
5763597ca5c0 add DomainHandler
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
18
1333
25746915a241 merge Luan and LuanState
Franklin Schmidt <fschmidt@gmail.com>
parents: 1332
diff changeset
19 public LuanDomainHandler(Luan luanInit) {
1454
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1402
diff changeset
20 LuanLogger.initThreadLogging();
1578
c922446f53aa immutable threading
Franklin Schmidt <fschmidt@gmail.com>
parents: 1563
diff changeset
21 this.luanInit = new Luan(luanInit);
1315
5763597ca5c0 add DomainHandler
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
22 }
5763597ca5c0 add DomainHandler
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
23
1329
5a39b006acd1 make LuanDomainHandler flexible
Franklin Schmidt <fschmidt@gmail.com>
parents: 1328
diff changeset
24 @Override public Handler newHandler(String domain) {
1333
25746915a241 merge Luan and LuanState
Franklin Schmidt <fschmidt@gmail.com>
parents: 1332
diff changeset
25 Luan luan = newLuan(domain);
1400
221eedb0f54e fix inner class gc bug
Franklin Schmidt <fschmidt@gmail.com>
parents: 1350
diff changeset
26 return new LuanHandler(luan,domain);
1329
5a39b006acd1 make LuanDomainHandler flexible
Franklin Schmidt <fschmidt@gmail.com>
parents: 1328
diff changeset
27 }
5a39b006acd1 make LuanDomainHandler flexible
Franklin Schmidt <fschmidt@gmail.com>
parents: 1328
diff changeset
28
1350
d8754a50adf1 better reset_luan
Franklin Schmidt <fschmidt@gmail.com>
parents: 1347
diff changeset
29 protected Luan newLuan(final String domain) {
1578
c922446f53aa immutable threading
Franklin Schmidt <fschmidt@gmail.com>
parents: 1563
diff changeset
30 Luan luan = new Luan(luanInit);
1563
8fbcc4747091 remove LuanFunction.luan
Franklin Schmidt <fschmidt@gmail.com>
parents: 1562
diff changeset
31 LuanFunction reset_luan = new LuanFunction() {
8fbcc4747091 remove LuanFunction.luan
Franklin Schmidt <fschmidt@gmail.com>
parents: 1562
diff changeset
32 @Override public Object call(Luan luan,Object[] args) {
1350
d8754a50adf1 better reset_luan
Franklin Schmidt <fschmidt@gmail.com>
parents: 1347
diff changeset
33 domainHandler.removeHandler(domain);
d8754a50adf1 better reset_luan
Franklin Schmidt <fschmidt@gmail.com>
parents: 1347
diff changeset
34 return LuanFunction.NOTHING;
d8754a50adf1 better reset_luan
Franklin Schmidt <fschmidt@gmail.com>
parents: 1347
diff changeset
35 }
d8754a50adf1 better reset_luan
Franklin Schmidt <fschmidt@gmail.com>
parents: 1347
diff changeset
36 };
1328
55b8210b4ec0 add MDC host
Franklin Schmidt <fschmidt@gmail.com>
parents: 1321
diff changeset
37 try {
1329
5a39b006acd1 make LuanDomainHandler flexible
Franklin Schmidt <fschmidt@gmail.com>
parents: 1328
diff changeset
38 LuanTable Http = (LuanTable)luan.require("luan:http/Http.luan");
1562
b89212fd04b5 remove table.luan
Franklin Schmidt <fschmidt@gmail.com>
parents: 1454
diff changeset
39 Http.put( luan, "domain", domain );
b89212fd04b5 remove table.luan
Franklin Schmidt <fschmidt@gmail.com>
parents: 1454
diff changeset
40 Http.put( luan, "reset_luan", reset_luan );
1329
5a39b006acd1 make LuanDomainHandler flexible
Franklin Schmidt <fschmidt@gmail.com>
parents: 1328
diff changeset
41 } catch(LuanException e) {
5a39b006acd1 make LuanDomainHandler flexible
Franklin Schmidt <fschmidt@gmail.com>
parents: 1328
diff changeset
42 throw new RuntimeException(e);
1328
55b8210b4ec0 add MDC host
Franklin Schmidt <fschmidt@gmail.com>
parents: 1321
diff changeset
43 }
1329
5a39b006acd1 make LuanDomainHandler flexible
Franklin Schmidt <fschmidt@gmail.com>
parents: 1328
diff changeset
44 return luan;
5a39b006acd1 make LuanDomainHandler flexible
Franklin Schmidt <fschmidt@gmail.com>
parents: 1328
diff changeset
45 }
5a39b006acd1 make LuanDomainHandler flexible
Franklin Schmidt <fschmidt@gmail.com>
parents: 1328
diff changeset
46
5a39b006acd1 make LuanDomainHandler flexible
Franklin Schmidt <fschmidt@gmail.com>
parents: 1328
diff changeset
47 @Override public Response handle(Request request) {
5a39b006acd1 make LuanDomainHandler flexible
Franklin Schmidt <fschmidt@gmail.com>
parents: 1328
diff changeset
48 return domainHandler.handle(request);
1315
5763597ca5c0 add DomainHandler
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
49 }
5763597ca5c0 add DomainHandler
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
50 }