Mercurial Hosting > luan
comparison src/luan/modules/http/HttpServicer.java @ 787:c49980cdece6
use incremental cloning to serve web pages
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Sun, 04 Sep 2016 00:18:00 -0600 |
parents | d69d3c51c44e |
children | 60661a8e738c |
comparison
equal
deleted
inserted
replaced
786:fe63c508a177 | 787:c49980cdece6 |
---|---|
44 public static boolean service(LuanState luan,HttpServletRequest request,HttpServletResponse response,String modName) | 44 public static boolean service(LuanState luan,HttpServletRequest request,HttpServletResponse response,String modName) |
45 throws LuanException | 45 throws LuanException |
46 { | 46 { |
47 LuanFunction fn; | 47 LuanFunction fn; |
48 synchronized(luan) { | 48 synchronized(luan) { |
49 if( luan.isLocked ) { | |
50 if( PackageLuan.wouldLoad(luan,"luan:http/Http.luan") || PackageLuan.wouldLoad(luan,modName) ) { | |
51 luan.isLocked = false; | |
52 luan.deepenClone(luan,new LuanCloner(LuanCloner.Type.COMPLETE)); | |
53 } | |
54 } | |
49 LuanTable module = (LuanTable)PackageLuan.require(luan,"luan:http/Http.luan"); | 55 LuanTable module = (LuanTable)PackageLuan.require(luan,"luan:http/Http.luan"); |
50 LuanTable per_session_pages = (LuanTable)module.rawGet("per_session_pages"); | 56 LuanTable per_session_pages = (LuanTable)module.rawGet("per_session_pages"); |
51 Object mod = PackageLuan.load(luan,modName); | 57 Object mod = PackageLuan.load(luan,modName); |
52 if( mod==null ) | 58 if( mod==null ) |
53 return false; | 59 return false; |
63 luan = (LuanState)cloner.clone(luan); | 69 luan = (LuanState)cloner.clone(luan); |
64 session.setAttribute("luan",luan); | 70 session.setAttribute("luan",luan); |
65 } | 71 } |
66 fn = (LuanFunction)PackageLuan.require(luan,modName); | 72 fn = (LuanFunction)PackageLuan.require(luan,modName); |
67 } else { | 73 } else { |
68 LuanCloner cloner = new LuanCloner(LuanCloner.Type.COMPLETE); | 74 LuanCloner cloner = new LuanCloner(LuanCloner.Type.INCREMENTAL); |
69 luan = (LuanState)cloner.clone(luan); | 75 luan = (LuanState)cloner.clone(luan); |
70 fn = (LuanFunction)cloner.get(mod); | 76 fn = (LuanFunction)cloner.get(mod); |
71 } | 77 } |
72 } | 78 } |
73 | 79 |