Mercurial Hosting > luan
diff src/luan/lib/PickleClient.java @ 146:0517a4a7fcc5
add Io.reverse_pickle
git-svn-id: https://luan-java.googlecode.com/svn/trunk@147 21e917c8-12df-6dd8-5cb6-c86387c605b9
author | fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9> |
---|---|
date | Sun, 15 Jun 2014 13:35:33 +0000 |
parents | 0594c132888b |
children | 138b9baee80b |
line wrap: on
line diff
--- a/src/luan/lib/PickleClient.java Sun Jun 15 10:02:16 2014 +0000 +++ b/src/luan/lib/PickleClient.java Sun Jun 15 13:35:33 2014 +0000 @@ -8,19 +8,43 @@ import luan.LuanException; import luan.LuanTable; import luan.LuanJavaFunction; +import luan.LuanFunction; public final class PickleClient { private final PickleCon con; + private final LuanFunction _reversed_pickle; PickleClient(LuanState luan,DataInputStream in,DataOutputStream out) { - con = new PickleCon(luan,in,out); + this(new PickleCon(luan,in,out)); + } + + PickleClient(PickleCon con) { + this.con = con; + try { + this._reversed_pickle = new LuanJavaFunction( + PickleClient.class.getMethod( "_reversed_pickle" ), this + ); + } catch(NoSuchMethodException e) { + throw new RuntimeException(e); + } + } + + public Object _reversed_pickle() throws LuanException, IOException { + new PickleServer(con).run(); + return con.read(); } public Object call(Object... args) throws LuanException, IOException { con.write(args); - Object[] result = Luan.array(con.read()); + Object[] result; + con.ioModule.put("_reversed_pickle",_reversed_pickle); + try { + result = Luan.array(con.read()); + } finally { + con.ioModule.put("_reversed_pickle",null); + } boolean ok = (boolean)result[0]; if( ok ) { Object[] rtn = new Object[result.length-1];