=================================================================== RCS file: /home/cvs/OpenXM/src/k097/lib/ox/ox.k,v retrieving revision 1.6 retrieving revision 1.9 diff -u -p -r1.6 -r1.9 --- OpenXM/src/k097/lib/ox/ox.k 2000/12/14 04:35:16 1.6 +++ OpenXM/src/k097/lib/ox/ox.k 2000/12/27 10:16:12 1.9 @@ -1,4 +1,4 @@ -/* $OpenXM: OpenXM/src/k097/lib/ox/ox.k,v 1.5 2000/12/12 13:58:21 takayama Exp $ */ +/* $OpenXM: OpenXM/src/k097/lib/ox/ox.k,v 1.8 2000/12/21 09:25:23 takayama Exp $ */ /* Load_sm1(["ox.sm1",AddString([GetEnv("OpenXM_HOME"),"/lib/sm1/ox.sm1"])], "ox.sm1.loaded"); */ @@ -47,6 +47,14 @@ class OXchannel extends Object { return(r); } + def popString() { + local cc,r; + cc = channel; + sm1(" cc oxpopstring /r set "); + return(r); + } + + } class OXcontrol extends Object { @@ -70,7 +78,7 @@ class OXcontrol extends Object { sm1(" /data peer 1 get toString def "); s = AddString( [GetEnv("OpenXM_HOME"), - "/src/oxc/oxc", + "/bin/oxc", " -c ", pass, " -h "," localhost ", " -p ", data, " -x ", " & "]); sm1(" [ (/bin/csh -c \") s (\") ] cat /stmp set "); @@ -89,6 +97,9 @@ class OXcontrol extends Object { def popCMO() { return(control.channel.popCMO()); } + def popString() { + return(control.channel.popString()); + } } @@ -141,8 +152,11 @@ class OX extends OXcontrol { def popCMO() { return(engine.channel.popCMO()); } + def popString() { + return(engine.channel.popString()); + } - def rpc(func,ar) { + def rpc_submit(func,ar) { local n,i,one,comm; if (! IsString(func)) { Error("The first argument of rpc must be a string."); @@ -170,10 +184,25 @@ class OX extends OXcontrol { this.pushCMO(func); this.pushCMD(SM_executeFunction); + } + + def rpc(func,ar) { + local one; + sm1(" /one 1 def "); + rpc_submit(func,ar); this.pushCMO(one); this.pushCMO("ox_ptod"); this.pushCMD(SM_executeFunction); return(this.popCMO()); + } + + def rpc_str(func,ar) { + rpc_submit(func,ar); + return(this.popString()); + } + def executeString(s) { + this.pushCMO(s); + this.pushCMD(SM_executeStringByLocalParser); } }