Mercurial Hosting > luan
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 |
rev | line source |
---|---|
1315 | 1 package luan.modules.http; |
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 | 8 import luan.LuanTable; |
1350 | 9 import luan.LuanFunction; |
1315 | 10 import luan.LuanException; |
1454 | 11 import luan.modules.logging.LuanLogger; |
1315 | 12 |
13 | |
1329
5a39b006acd1
make LuanDomainHandler flexible
Franklin Schmidt <fschmidt@gmail.com>
parents:
1328
diff
changeset
|
14 public class LuanDomainHandler implements Handler, DomainHandler.Factory { |
1315 | 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 | 18 |
1333
25746915a241
merge Luan and LuanState
Franklin Schmidt <fschmidt@gmail.com>
parents:
1332
diff
changeset
|
19 public LuanDomainHandler(Luan luanInit) { |
1454 | 20 LuanLogger.initThreadLogging(); |
1578 | 21 this.luanInit = new Luan(luanInit); |
1315 | 22 } |
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 | 29 protected Luan newLuan(final String domain) { |
1578 | 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 | 33 domainHandler.removeHandler(domain); |
34 return LuanFunction.NOTHING; | |
35 } | |
36 }; | |
1328 | 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 | 39 Http.put( luan, "domain", domain ); |
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 | 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 | 49 } |
50 } |