[e-lang] CapTP in E progress report #3
Kevin Reid
kpreid at mac.com
Tue Jul 31 20:56:57 EDT 2007
GCAnswerOp, GCExportOp, and incoming TerminatedOp have been implemented.
Unobvious fact: everything in the questions table is a promise tail.
My previous statement about wireCounts was inaccurate. The Exports
table stores its wire counts (how many New*Descs or ImportDescs have
been sent) as the CommTable allocation counts, but the Imports table
does not; this is because, as <http://www.erights.org/elib/distrib/
captp/dagc.html> describes, there is no message from the exporter to
the importer reporting that a particular Imports entry is to be freed.
Instead, the wire count should be stored separately (in whatever
object is in the value field of that table). Whenever the count of
local proxies for that import goes to zero, a GCExportOp should be
sent with the current stored wireCount and the wireCount zeroed. The
receiver of GCExportOp should decrease the allocation count in the
Exports table by the passed amount.
What are the expected consequences of TerminatedOp? I thought of
breaking eventual refs, and I got __reactToLostClient because it came
along with the comm-tables, but is there anything else?
(Both http://www.erights.org/elib/distrib/captp/partition.html and
http://www.erights.org/elib/distrib/captp/TerminatedOp.html lack
details.)
--
Kevin Reid <http://homepage.mac.com/kpreid/>
More information about the e-lang
mailing list