[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.