Mercurial Hosting > luan
diff src/luan/modules/http/LuanHandler.java @ 1185:94cf2576a922
implement WebHandler for nginx
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Wed, 21 Feb 2018 21:22:16 -0700 |
parents | 794ddcfbee20 |
children | ef8cd42e23d5 |
line wrap: on
line diff
--- a/src/luan/modules/http/LuanHandler.java Wed Feb 21 16:51:56 2018 -0700 +++ b/src/luan/modules/http/LuanHandler.java Wed Feb 21 21:22:16 2018 -0700 @@ -26,32 +26,23 @@ public class LuanHandler implements Handler { - private final LuanState luanInit; private final Logger logger; private final ReadWriteLock lock = new ReentrantReadWriteLock(); - private LuanState luan; + private final LuanState luan; - private static final Method resetLuanMethod; - static { - try { - resetLuanMethod = LuanHandler.class.getMethod("reset_luan"); - } catch(NoSuchMethodException e) { - throw new RuntimeException(e); - } - } - - public LuanHandler(LuanState luan,String loggerRoot) { - this.luanInit = luan; + public LuanHandler(LuanState luanInit,String loggerRoot) { if( loggerRoot==null ) loggerRoot = ""; logger = LoggerFactory.getLogger(loggerRoot+LuanHandler.class.getName()); + + LuanCloner cloner = new LuanCloner(LuanCloner.Type.COMPLETE); + this.luan = (LuanState)cloner.clone(luanInit); try { - LuanTable Http = (LuanTable)PackageLuan.require(luanInit,"luan:http/Http.luan"); - Http.rawPut( "reset_luan", new LuanJavaFunction(resetLuanMethod,this) ); + PackageLuan.load(luan,"site:/init.luan"); } catch(LuanException e) { - throw new RuntimeException(e); + String err = e.getLuanStackTraceString(); + logger.error(err); } - setLuan(); } @Override public Response handle(Request request) { @@ -80,22 +71,13 @@ thread.setName(oldName); } } -/* - @Override protected void doStart() throws Exception { -// Thread.dumpStack(); -//System.out.println("qqqqqqqqqqqqqqqqqqqq doStart "+this); - setLuan(); - super.doStart(); - } - @Override protected void doStop() throws Exception { + public void close() throws IOException { synchronized(luan) { luan.close(); } -//System.out.println("qqqqqqqqqqqqqqqqqqqq doStop "+this); - super.doStop(); } -*/ + public Object call_rpc(String fnName,Object... args) throws LuanException { lock.readLock().lock(); try { @@ -118,35 +100,6 @@ } } - public void reset_luan() { - new Thread() { - public void run() { - lock.writeLock().lock(); - try { - synchronized(luan) { - luan.close(); - setLuan(); - } - } catch(IOException e) { - logger.error("reset_luan failed",e); - } finally { - lock.writeLock().unlock(); - } - } - }.start(); - } - - private void setLuan() { - LuanCloner cloner = new LuanCloner(LuanCloner.Type.COMPLETE); - luan = (LuanState)cloner.clone(luanInit); - try { - PackageLuan.load(luan,"site:/init.luan"); - } catch(LuanException e) { - String err = e.getLuanStackTraceString(); - logger.error(err); - } - } - public Object runLuan(String sourceText,String sourceName) throws LuanException { LuanFunction fn = Luan.load(sourceText,sourceName); synchronized(luan) {