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) {