[BACK]Return to ox.k CVS log [TXT][DIR] Up to [local] / OpenXM / src / k097 / lib / ox

Diff for /OpenXM/src/k097/lib/ox/ox.k between version 1.8 and 1.14

version 1.8, 2000/12/21 09:25:23 version 1.14, 2016/04/01 22:45:56
Line 1 
Line 1 
 /* $OpenXM: OpenXM/src/k097/lib/ox/ox.k,v 1.7 2000/12/14 10:04:57 takayama Exp $  */  /* $OpenXM: OpenXM/src/k097/lib/ox/ox.k,v 1.13 2008/01/28 00:13:45 takayama Exp $  */
   
 /* Load_sm1(["ox.sm1",AddString([GetEnv("OpenXM_HOME"),"/lib/sm1/ox.sm1"])],  /* Load_sm1(["ox.sm1",AddString([GetEnv("OpenXM_HOME"),"/lib/sm1/ox.sm1"])],
          "ox.sm1.loaded"); */           "ox.sm1.loaded"); */
Line 6  Load_sm1(["oxasir.sm1",AddString([GetEnv("OpenXM_HOME"
Line 6  Load_sm1(["oxasir.sm1",AddString([GetEnv("OpenXM_HOME"
           "/lib/sm1/oxasir.sm1"])],            "/lib/sm1/oxasir.sm1"])],
          "oxasir.sm1.loaded");           "oxasir.sm1.loaded");
   
   def oxGetClientList() {
     local clist;
     sm1(" [(oxGetClientList)] extension /clist set ");
     return( clist );
   }
   
 class OXchannel extends Object {  class OXchannel extends Object {
   local channel;    local channel;
   /* Just add a tag. */    /* Just add a tag. */
Line 62  class OXcontrol extends Object {
Line 68  class OXcontrol extends Object {
   def getControl() {    def getControl() {
     return(control);      return(control);
   }    }
   def generate(c) {    def generate(c,useX) {
        if (Length(Arglist) <= 1) {
          useX = true;
        }
      if (Tag(c) != 0) {       if (Tag(c) != 0) {
        control = c;         control = c;
        return(this);         return(this);
      }else{       }else{
        return(start());         return(start(useX));
      }       }
   }    }
   def start() {    def start(useX) {
     local c,e, pass, peer, data, s, stmp;      local c,e, pass, peer, data, s, stmp, xopt;
     this = new(super.new0());      if (Length(Arglist) == 0) {
          useX = true;
       }
       if (useX) {
           xopt = " -x ";
       }else{
           xopt = "  ";
       }
       this = new(Object.new0());
     sm1(" [(oxGenPass)] extension /pass set ");      sm1(" [(oxGenPass)] extension /pass set ");
     sm1(" [(oxGetPort1) (localhost)] extension /peer set ");      sm1(" [(oxGetPort1) (localhost)] extension /peer set ");
     sm1(" /data peer 1 get toString def ");      sm1(" /data peer 1 get toString def ");
     s = AddString(      s = AddString(
       [GetEnv("OpenXM_HOME"),        [GetEnv("OpenXM_HOME"),
        "/bin/oxc",         "/bin/oxc",
        " -c ", pass, " -h "," localhost ", " -p ", data, " -x ",         " -c ", pass, " -h "," localhost ", " -p ", data, xopt,
        " & "]);         " & "]);
     sm1(" [ (/bin/csh -c \") s (\") ] cat /stmp set ");      sm1(" [ (/bin/sh -c \") s (\") ] cat /stmp set ");
     sm1(" stmp message ");      sm1(" stmp message ");
     sm1(" stmp system  ");      sm1(" stmp system  ");
     sm1(" [(oxCreateControl_RFC_101) peer 0 pass] extension /c set ");      sm1(" [(oxCreateControl_RFC_101) peer 0 pass] extension /c set ");
Line 117  class OX extends OXcontrol {
Line 134  class OX extends OXcontrol {
      return(engineIDs);       return(engineIDs);
   }    }
   /* OX.generate("ox_sm1"); or OX.generate("ox_sm1",null) */    /* OX.generate("ox_sm1"); or OX.generate("ox_sm1",null) */
   def generate(name,control) {    def generate(name,control,useX) {
     local c,e, pass, peer, data, s, stmp, engineID;      local c,e, pass, peer, data, s, stmp, engineID,nn;
     if (Length(Arglist) == 0) {      nn = Length(Arglist);
       name = "ox_sm1";  control = null;      if (nn == 0) {
         name = "ox_sm1";  control = null; useX = true;
     }      }
     if (Length(Arglist) == 1) {      if (nn == 1) {
       control = null;        control = null; useX = true;
     }      }
     this = new(super.generate(control));      if (nn == 2) {
     control = super.getControl();        useX = true;
       }
       this = new(OXcontrol.generate(control,useX));
       control = this.getControl();
     sm1(" [(oxGetPort1) (localhost)] extension /peer set ");      sm1(" [(oxGetPort1) (localhost)] extension /peer set ");
     sm1(" /data peer 1 get def ");      sm1(" /data peer 1 get def ");
     /* BUG: control.pushCMO(data) does not work.      /* BUG: control.pushCMO(data) does not work.
Line 156  class OX extends OXcontrol {
Line 177  class OX extends OXcontrol {
     return(engine.channel.popString());      return(engine.channel.popString());
   }    }
   
   def rpc(func,ar) {    def rpc_submit(func,ar) {
      local n,i,one,comm;       local n,i,one,comm;
      if (! IsString(func)) {       if (! IsString(func)) {
        Error("The first argument of rpc must be a string.");         Error("The first argument of rpc must be a string.");
Line 184  class OX extends OXcontrol {
Line 205  class OX extends OXcontrol {
      this.pushCMO(func);       this.pushCMO(func);
      this.pushCMD(SM_executeFunction);       this.pushCMD(SM_executeFunction);
   
     }
   
     def rpc(func,ar) {
        local one;
        sm1(" /one 1 def ");
        rpc_submit(func,ar);
      this.pushCMO(one);       this.pushCMO(one);
      this.pushCMO("ox_ptod");       this.pushCMO("ox_ptod");
      this.pushCMD(SM_executeFunction);       this.pushCMD(SM_executeFunction);
      return(this.popCMO());       return(this.popCMO());
   }    }
   
     def rpc_str(func,ar) {
        rpc_submit(func,ar);
        return(this.popString());
     }
   def executeString(s) {    def executeString(s) {
      this.pushCMO(s);       this.pushCMO(s);
      this.pushCMD(SM_executeStringByLocalParser);       this.pushCMD(SM_executeStringByLocalParser);
   }    }
   
 }  }
   
 /*  /*
Line 204  class OX extends OXcontrol {
Line 234  class OX extends OXcontrol {
      Println(f);       Println(f);
 */  */
 def startAsir() {  def startAsir() {
   local a,asirpeer;    return(Asir.generate());
   a = OX.generate("ox_asir");  
   asirpeer = (a.getEngine()).getChannel();  
   Println(asirpeer);  
   sm1(" [asirpeer oxasirpath.asirlib] loadAsirFile ");  
   return(a);  
 }  }
   
   class Asir extends OX {
     local ;
     def generate(useX) {
       local asirpeer,a;
       if (Length(Arglist) == 0) { useX = true; }
       this = new(OX.generate("ox_asir",null,useX));
       a = this;
       asirpeer = (a.getEngine()).getChannel();
       Println(asirpeer);
       sm1(" [asirpeer oxasirpath.asirlib] loadAsirFile ");
       return(this);
     }
     def OnTimer() {
       local a;
       a = this;
       a.executeString("K0_timer=time();");
       a.popString();
       a.executeString("K0_timer_CPU=K0_timer[0];");
       a.popString();
       a.executeString("K0_timer_GC=K0_timer[1];");
       a.popString();
     }
     def OffTimer() {
       local a;
       a = this;
       a.executeString("map(rtostr,[time()[0]-K0_timer_CPU,time()[1]-K0_timer_GC]);");
       return(a.popCMO());
     }
   }

Legend:
Removed from v.1.8  
changed lines
  Added in v.1.14

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>