Mercurial Hosting > luan
diff src/luan/lib/PickleServer.java @ 147:cc3a0578edac
fix Io.reverse_pickle
git-svn-id: https://luan-java.googlecode.com/svn/trunk@148 21e917c8-12df-6dd8-5cb6-c86387c605b9
author | fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9> |
---|---|
date | Sun, 15 Jun 2014 15:41:36 +0000 |
parents | 0517a4a7fcc5 |
children |
line wrap: on
line diff
--- a/src/luan/lib/PickleServer.java Sun Jun 15 13:35:33 2014 +0000 +++ b/src/luan/lib/PickleServer.java Sun Jun 15 15:41:36 2014 +0000 @@ -38,6 +38,7 @@ list.add( con.pickle(obj) ); } } catch(LuanException e) { +// System.out.println(e); //e.printStackTrace(); list.add( "return false, " ); list.add( con.pickle(e.getMessage()) ); @@ -54,14 +55,14 @@ public void run() { LuanTable ioModule = con.ioModule; Object old_reverse_pickle = ioModule.get("reverse_pickle"); - Object old_close_pickle = ioModule.get("unreverse_pickle"); + Object old_unreverse_pickle = ioModule.get("_unreverse_pickle"); try { try { ioModule.put("reverse_pickle", new LuanJavaFunction( - PickleServer.class.getMethod( "reverse_pickle" ), this + PickleServer.class.getMethod( "reverse_pickle", LuanFunction.class ), this ) ); - ioModule.put("unreverse_pickle", new LuanJavaFunction( - PickleServer.class.getMethod( "unreverse_pickle" ), this + ioModule.put("_unreverse_pickle", new LuanJavaFunction( + PickleServer.class.getMethod( "_unreverse_pickle" ), this ) ); } catch(NoSuchMethodException e) { throw new RuntimeException(e); @@ -85,20 +86,29 @@ } } finally { ioModule.put("reverse_pickle",old_reverse_pickle); - ioModule.put("unreverse_pickle",old_close_pickle); + ioModule.put("_unreverse_pickle",old_unreverse_pickle); } } - public LuanTable reverse_pickle() throws IOException { + public void reverse_pickle(LuanFunction fn) throws IOException, LuanException { try { con.write( "return Io._reversed_pickle()\n" ); } catch(LuanException e) { throw new RuntimeException(e); } - return new PickleClient(con).table(); + PickleClient pc = new PickleClient(con); + try { + con.luan.call(fn,new Object[]{pc.table()}); + } finally { + try { + pc.call( "Io._unreverse_pickle()\n" ); + } catch(LuanException e) { + throw new RuntimeException(e); + } + } } - public void unreverse_pickle() { + public void _unreverse_pickle() { isRunning = false; }