[e-cvs] cvs commit: e/src/jsrc/org/erights/e/elib/tables ConstMap.java ConstMapImpl.java EMap.java

markm@eros.cs.jhu.edu markm@eros.cs.jhu.edu
Tue, 21 Aug 2001 10:28:15 -0400


markm       01/08/21 10:28:15

  Modified:    src/esrc/scripts evalServer.e evalServer.updoc
               src/jsrc/net/captp/jcomm LocatorUnum.java
                        NewRemotePromiseDesc.java Promise3Desc.java
                        SturdyRef.java
               src/jsrc/net/vattp/data NetConfig.java
               src/jsrc/org/erights/e/elib/ref StemCell.java
               src/jsrc/org/erights/e/elib/serial RemoteDelivery.java
               src/jsrc/org/erights/e/elib/tables ConstMap.java
                        ConstMapImpl.java EMap.java
  Log:
  Successfully revived a cycle from StemCells

Revision  Changes    Path
1.2       +8 -5      e/src/esrc/scripts/evalServer.e

Index: evalServer.e
===================================================================
RCS file: /cvs/e/src/esrc/scripts/evalServer.e,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- evalServer.e	2001/08/20 05:07:43	1.1
+++ evalServer.e	2001/08/21 14:28:14	1.2
@@ -11,14 +11,16 @@
 def ScopeSetup := <unsafe:org.erights.e.elang.interp.ScopeSetup>
 
 def evalServer {
+    # props default to the local interp's props
     to newScriptEvaluator(args) :any {
+        evalServer newScriptEvaluator(args, interp getProps())
+    }
+    to newScriptEvaluator(args, props) :any {
 
         def [altout, altoutBuf] := TextWriterMaker makeBufferingPair()
         def [alterr, alterrBuf] := TextWriterMaker makeBufferingPair()
 
         def cmdLoop
-        # XXX What properties should we use?
-        def props := interp getProps()
         def privileged := ScopeSetup privileged(
             true,
             altout,
@@ -37,11 +39,12 @@
             to getCmdLoop() :any { cmdLoop }
         }
     }
+    to shutdown() {
+        interp continueAtTop()
+    }
 }
 introducer onTheAir()
 def sr := sturdyRef(evalServer)
 def uri := introducer sturdyToURI(sr)
 println(uri)
-uri
-
-
+interp blockAtTop()



1.2       +27 -8     e/src/esrc/scripts/evalServer.updoc

Index: evalServer.updoc
===================================================================
RCS file: /cvs/e/src/esrc/scripts/evalServer.updoc,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- evalServer.updoc	2001/08/20 05:07:43	1.1
+++ evalServer.updoc	2001/08/21 14:28:14	1.2
@@ -1,7 +1,7 @@
 ? introducer onTheAir()
 # value: ["3DES_SDH_M"]
 
-? def sr := <cap://192.168.0.21:1083;206.133.208.174:1083/08Y05bjPMtifAiO5pupFs1AOZGXS/0CFAsPlhO=U1bSRCpPyg1UrW184T>
+? def sr := <cap://192.168.0.21:2093;63.178.231.159:2093/VmNr75EJgkClc4GYgHFcTkAJo=u/0DPAx5Y2bOfTURHDToQoiXE1f6ED>
 # value: <SturdyRef>
 
 ? def evalServerPass := sr liveRef()
@@ -11,7 +11,7 @@
 # value: <Eventual ref>
 
 ? 
-? def r1 := evalServerPass <- execVow("2 + 3")
+? def r1 := sePass1 <- evalCmdVow("2 + 3")
 # value: <Eventual ref>
 
 ? r1
@@ -23,7 +23,7 @@
 # valuex: 5
 
 
-? def r2 := evalServerPass <- execVow(`println("Hello world")`)
+? def r2 := sePass1 <- evalCmdVow(`println("Hello world")`)
 # value: <Eventual ref>
 
 ? r2
@@ -37,7 +37,7 @@
 #         
 
 
-? def cmdLoopPass := evalServerPass <- getCmdLoop()
+? def cmdLoopPass := sePass1 <- getCmdLoop()
 # value: <Eventual ref>
 
 ? def reactor {
@@ -50,7 +50,7 @@
 ? cmdLoopPass <- addStatusReactor(reactor)
 # value: <Eventual ref>
 
-? def r3 := evalServerPass <- execVow("3 _/ 0")
+? def r3 := sePass1 <- evalCmdVow("3 _/ 0")
 # value: <Eventual ref>
 
 ? r3
@@ -61,7 +61,7 @@
 #        \n\
 #        "
 
-? def r4 := evalServerPass <- execVow("interp getArgs()")
+? def r4 := sePass1 <- evalCmdVow("interp getArgs()")
 # value: <Eventual ref>
 
 ? r4
@@ -72,7 +72,7 @@
 #        \n\
 #        "
 
-? def r5 := evalServerPass <- execVow("interp blockAtTop()")
+? def r5 := sePass1 <- evalCmdVow("interp blockAtTop()")
 # value: <Eventual ref>
 
 ? r5
@@ -80,7 +80,7 @@
 reactToSuccess[5, true]
 # value: ""
 
-? def r6 := evalServerPass <- execVow("4 * 3")
+? def r6 := sePass1 <- evalCmdVow("4 * 3")
 # value: <Eventual ref>
 
 ? r6
@@ -96,5 +96,24 @@
 # value: "# valuex: 12\n\
 #        \n\
 #        "
+
+? def never := evalServerPass <- shutdown()
+# value: <Eventual ref>
+
+? never
+? sePass1
+# value: <Eventual ref>
+
+? Ref isResolved(sePass1)
+# value: true
+
+? Ref isResolved(evalServerPass)
+# value: true
+
+? evalServerPass
+# value: <ref broken by problem: <SocketException: Connection reset by peer: JVM_recv in socket input stream read>>
+
+? sePass1
+# value: <Eventual ref>
 
 ? 



1.6       +10 -9     e/src/jsrc/net/captp/jcomm/LocatorUnum.java

Index: LocatorUnum.java
===================================================================
RCS file: /cvs/e/src/jsrc/net/captp/jcomm/LocatorUnum.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- LocatorUnum.java	2001/07/26 15:28:07	1.5
+++ LocatorUnum.java	2001/08/21 14:28:14	1.6
@@ -75,25 +75,26 @@
     }
     
     /**
-     * The basic operation underlying 'SturdyRef.promiseRef()'. This is where
-     * a reference to a remote object actually gets the various underlying comm
-     * systems connected so that we can send messages.
+     * The basic operation underlying 'SturdyRef.getPass()'. This is where
+     * a reference to a remote object actually gets the various underlying 
+     * comm systems connected so that we can send messages.
      *
      * @param searchPath A list of places to try to find the vat
-     * @param vatID The vat from which the object reference should be obtained
+     * @param vatID The vat from which the object reference should be 
+     *              obtained 
      * @param swissNum The SwissNumber of the desired object
      * @param optFarVine Optional object for holding onto a Remote reference 
      *                   via whoever we got it from long enough to fetch our 
      *                   own Remote reference via this lookup.  
      */
-    public Object promiseResolve(ConstList searchPath,
-                                 String vatID, 
-                                 BigInteger swissNum,
-                                 Object optFarVine)
+    public Object getPass(ConstList searchPath,
+                          String vatID, 
+                          BigInteger swissNum,
+                          Object optFarVine)
     throws IOException, IndexOutOfBoundsException {
         if (Trace.captp.debug && Trace.ON) {
             Trace.captp.debugm
-                ("" + this + ".resolve(" + searchPath + ", " + vatID + 
+                ("" + this + ".getPass(" + searchPath + ", " + vatID + 
                  ", " + swissNum + ", " + optFarVine + ")");
         }
         ProxyConnection optProxyConn = 



1.2       +2 -0      e/src/jsrc/net/captp/jcomm/NewRemotePromiseDesc.java

Index: NewRemotePromiseDesc.java
===================================================================
RCS file: /cvs/e/src/jsrc/net/captp/jcomm/NewRemotePromiseDesc.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- NewRemotePromiseDesc.java	2001/08/20 21:17:49	1.1
+++ NewRemotePromiseDesc.java	2001/08/21 14:28:14	1.2
@@ -35,6 +35,8 @@
  */
 /*package*/ class NewRemotePromiseDesc implements ObjectRefDesc {
     
+    static private final long serialVersionUID = -6186892267621515701L;
+    
     private int myImportPos;
     private int myRdrPos;
     private BigInteger myRdrBase;



1.2       +2 -0      e/src/jsrc/net/captp/jcomm/Promise3Desc.java

Index: Promise3Desc.java
===================================================================
RCS file: /cvs/e/src/jsrc/net/captp/jcomm/Promise3Desc.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Promise3Desc.java	2001/08/20 21:17:49	1.1
+++ Promise3Desc.java	2001/08/21 14:28:14	1.2
@@ -33,6 +33,8 @@
  */
 /*package*/ class Promise3Desc implements ObjectRefDesc {
     
+    static private final long serialVersionUID = -3922505236390332859L;
+    
     private ConstList mySearchPath;
     private String myHostID;
     private BigInteger myNonce;



1.10      +15 -8     e/src/jsrc/net/captp/jcomm/SturdyRef.java

Index: SturdyRef.java
===================================================================
RCS file: /cvs/e/src/jsrc/net/captp/jcomm/SturdyRef.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- SturdyRef.java	2001/08/17 03:11:32	1.9
+++ SturdyRef.java	2001/08/21 14:28:14	1.10
@@ -125,21 +125,28 @@
     }
 
     /**
-     * Return a (live) reference to the object which this SturdyRef designates.
-     * The result may be either a direct or eventual reference.
+     * Return a (live) reference to the object which this SturdyRef 
+     * designates.  The result may be either a direct or eventual reference.
      */
+    public Object getPass() throws IOException {
+        return myLocatorUnum.getPass(mySearchPath, 
+                                     myHostID,
+                                     mySwissNum,
+                                     null);
+    }
+
+    /**
+     * @deprecated Use getPass() instead.
+     */
     public Object liveRef() throws IOException {
-        return myLocatorUnum.promiseResolve(mySearchPath, 
-                                            myHostID,
-                                            mySwissNum,
-                                            null);
+        return getPass();
     }
 
     /**
-     * @deprecated Use liveRef() instead.
+     * @deprecated Use getPass() instead.
      */
     public Object promiseRef() throws IOException {
-        return liveRef();
+        return getPass();
     }
 
     /**



1.3       +1 -1      e/src/jsrc/net/vattp/data/NetConfig.java

Index: NetConfig.java
===================================================================
RCS file: /cvs/e/src/jsrc/net/vattp/data/NetConfig.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- NetConfig.java	2001/08/20 21:17:49	1.2
+++ NetConfig.java	2001/08/21 14:28:15	1.3
@@ -38,7 +38,7 @@
  */
 public class NetConfig implements PassByConstruction, Persistent, Selfless {
     
-    static final long serialVersionUID = 7141557786514460621L;
+    static private final long serialVersionUID = 7141557786514460621L;
 
     /**
      *



1.2       +10 -19    e/src/jsrc/org/erights/e/elib/ref/StemCell.java

Index: StemCell.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/elib/ref/StemCell.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- StemCell.java	2001/08/21 13:36:19	1.1
+++ StemCell.java	2001/08/21 14:28:15	1.2
@@ -61,6 +61,8 @@
 public abstract class StemCell extends Ref
 implements PassByConstruction, Persistent {
     
+    static final long serialVersionUID = 3574625250011981396L;
+    
     /**
      * null on the encoding side for a made StemCell.
      * Unresolved during the unserializing of the StemCell itself.
@@ -70,29 +72,18 @@
     private transient Ref myOptPromise;
     
     /**
-     * Makes a made StemCell
+     * Subclasses must define a readResolve() that both returns the 
+     * resolution of the StemCell, and resolves this resolver to that 
+     * resolution.
      */
-    protected StemCell() {
-        myOptPromise = null;
-    }
+    protected transient Resolver myOptResolver;
     
     /**
-     * Initializes the promise, does the default thing, and then resolves to 
-     * the result of readResolveStem(), to be provided by a subclass.
+     * Makes a made StemCell
      */
-    private void readObject(ObjectInputStream ois)
-    throws ClassNotFoundException, IOException {
-        Object[] pair = Ref.promise();
-        myOptPromise = (Ref)pair[0];
-        ois.defaultReadObject();
-        ((Resolver)pair[1]).resolve(readResolveStem());
+    protected StemCell() {
+        myOptPromise = null;
     }
-
-    /**
-     * Overridden by particular kinds of StemCells in order to provide the 
-     * cycle-safe equivalent of readResolveStem
-     */
-    protected abstract Object readResolveStem();
     
     /**
      * Initializes the promise, does the default thing, and then resolves to 
@@ -102,8 +93,8 @@
     throws ClassNotFoundException, IOException {
         Object[] pair = Ref.promise();
         myOptPromise = (Ref)pair[0];
+        myOptResolver = (Resolver)pair[1];
         ois.defaultReadObject();
-        ((Resolver)pair[1]).resolve(readResolveStem());
     }
 
     /**



1.5       +6 -4      e/src/jsrc/org/erights/e/elib/serial/RemoteDelivery.java

Index: RemoteDelivery.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/elib/serial/RemoteDelivery.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- RemoteDelivery.java	2001/08/21 13:36:19	1.4
+++ RemoteDelivery.java	2001/08/21 14:28:15	1.5
@@ -41,7 +41,7 @@
  */
 public class RemoteDelivery extends StemCell {
     
-    static private final long serialVersionUID = -1066078761914348565L;
+    static final long serialVersionUID = -1702614205914869122L;
     
     /** @serial receives the message */
     private Object myRecipient;
@@ -73,10 +73,12 @@
      * Invoked directly by the ObjectInputStream following desrialization of
      * the entire RemoteDelivery to get the object to use instead.
      */
-    protected Object readResolveStem() {
-        return E.sendAll(myRecipient, myVerb, myArgs);
+    private Object readResolve() {
+        Object result = E.sendAll(myRecipient, myVerb, myArgs);
+        myOptResolver.resolve(result);
+        return result;
     }
-    
+
     /**
      *
      */



1.22      +2 -0      e/src/jsrc/org/erights/e/elib/tables/ConstMap.java

Index: ConstMap.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/elib/tables/ConstMap.java,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -r1.21 -r1.22
--- ConstMap.java	2001/08/21 13:36:19	1.21
+++ ConstMap.java	2001/08/21 14:28:15	1.22
@@ -47,6 +47,8 @@
 public abstract class ConstMap
 extends EMap implements Selfless, PassByConstruction {
     
+    static final long serialVersionUID = -6424210992869387563L;
+    
     /** 
      * 
      */



1.16      +4 -2      e/src/jsrc/org/erights/e/elib/tables/ConstMapImpl.java

Index: ConstMapImpl.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/elib/tables/ConstMapImpl.java,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- ConstMapImpl.java	2001/08/21 13:36:19	1.15
+++ ConstMapImpl.java	2001/08/21 14:28:15	1.16
@@ -20,7 +20,7 @@
 */
 
 import java.io.ObjectStreamException;
-import org.erights.e.elib.serial.RemoteDelivery;
+import org.erights.e.elib.serial.RemoteCall;
 
 /**
  *
@@ -28,6 +28,8 @@
  * @author <a href="mailto:markm@erights.org">Mark S. Miller</a>
  */
 /*package*/ class ConstMapImpl extends ConstMap {
+    
+    static final long serialVersionUID = -2814488931279192860L;
 
     /**
      * This class should never be directly unserialized, so this instance 
@@ -47,7 +49,7 @@
      */
     private Object writeReplace() throws ObjectStreamException {
         Object[] args = { getKeys(), getValues() };
-        return new RemoteDelivery(GetMaker(), "fromColumns", args);
+        return new RemoteCall(GetMaker(), "fromColumns", args);
     }
     
     /**



1.24      +3 -0      e/src/jsrc/org/erights/e/elib/tables/EMap.java

Index: EMap.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/elib/tables/EMap.java,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -r1.23 -r1.24
--- EMap.java	2001/05/01 08:42:04	1.23
+++ EMap.java	2001/08/21 14:28:15	1.24
@@ -62,6 +62,9 @@
  * @author <a href="mailto:markm@erights.org">Mark S. Miller</a>
  */
 public abstract class EMap implements Printable, Persistent {
+    
+    static final long serialVersionUID = -7066420784218105992L;
+    
     /**
      * This object must never be stored as a value in a map.  It's used as an 
      * 'instead' to get/2 to simultaneously do a maps() test.