- public final Object call(JS.Array args) throws JS.Exn {
- try {
- return call2(args);
- } catch (IOException se) {
- if (Log.on) Log.log(this, se);
- throw new JS.Exn("socket exception: " + se);
-
- } catch (JS.Exn jse) {
- if (Log.on) Log.log(this, jse.toString());
- throw jse;
- }
+ public final Object call(Object a0, Object a1, Object a2, Object[] rest, int nargs) throws JS.Exn {
+ JSArray args = new JSArray();
+ for(int i=0; i<nargs; i++) args.addElement(i==0?a0:i==1?a1:i==2?a2:rest[i-3]);
+ return call(args);
+ }
+ public final Object call(final JSArray args) throws JS.Exn {
+ final Callback callback = JSContext.pause();
+ new java.lang.Thread() {
+ public void run() {
+ try {
+ final Object ret = call_(args);
+ Scheduler.add(new Scheduler.Task() { public void perform() { callback.call(ret); } });
+ } catch (IOException se) {
+ if (Log.on) Log.log(this, se);
+ throw new JS.Exn("socket exception: " + se);
+ }
+ } }.start();
+ return null;