Package erjang

Source Code of erjang.RPC

package erjang;

import erjang.m.rpc.MBox;

public class RPC {

  static EAtom am_$gen_call = EAtom.intern("$gen_call");
  static EAtom am_rex = EAtom.intern("rex");
  static EAtom am_undefined = EAtom.intern("undefined");
  static EAtom am_user = EAtom.intern("user");
  static EAtom am_call = EAtom.intern("call");
  static EAtom am_rpc = EAtom.intern("rpc");
  static EAtom am_call_from_java = EAtom.intern("call_from_java");
  static EAtom am_init = EAtom.intern("init");
  static EAtom am_get_status = EAtom.intern("get_status");
  static EAtom am_started = EAtom.intern("started");
 
 
  public static EObject call(EAtom mod, EAtom fun, EObject... args) {
    return call(mod, fun, EList.fromArray(args));
  }
 
  public static EObject call(EAtom mod, EAtom fun, ESeq args) {
   
    MBox mbox = new MBox();
    ESeq callargs = EList.make(mod, fun, args, mbox);
    EProc proc = new EProc(default_groupleader(), am_rpc, am_call_from_java, callargs);
    ERT.run(proc);
    //proc.joinb();

    return mbox.get_b();
  }
 
  private static EPID default_groupleader() {
    return erjang.m.rpc.Native.get_local_group_leader()
  }
 
 
  public static EObject call(EAtom mod, EAtom fun, ESeq args, long timeout) {
   
    MBox mbox = new MBox();
   
    EProc proc = new EProc(default_groupleader(),
                       am_rpc, am_call_from_java,
                       EList.make(mod, fun, args, mbox));
    ERT.run(proc);

    return mbox.get_b(timeout);
  }

  public static void wait_for_erjang_started(long timeout) {
    erjang.m.rpc.Native.wait_for_started(timeout);
  }
 
 
}
TOP

Related Classes of erjang.RPC

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.