A publication object is defined as:
object: {
def topic := //topic under which service is published;
def service := //the exported service object;
def cancel() { //unexport the service object }
}
A subscription object is defined as:
object: {
def topic := //topic subscribed to;
def handler := //the closure to be triggered;
def cancel() { //unsubscribe the handler }
}
NATIntercessiveMirror extends the default NATIntrospectiveMirror to also allow
programmers to supply their own code for the meta-operations defined on an object.
NATIntrospectiveMirror is a default mirror to represent an ambienttalk object
which is capable of offering the java meta-interface of any language value at the
ambienttalk level.
AmbientTalk/2 is a dually scoped programming language, providing access to both the lexical
scope methods and objects are defined in, as well as a dynamic scope which follows the
parent chain of an object.
This class is a special statement class used to test the correct scoping of method
invocation from the java level, rather than by executing ambienttalk code directly.
The constructor is declared protected such that it cannot be used externally,
but can be used by the OBJRootStripe class to create a stripe with an empty
parent table, which is normally not allowed.
Native Fields are represented in our reflective implementation as a pair
of accessor and mutator methods in the class of the native AmbientTalk object.
When a new publication is added locally, it is first checked whether this publication
can already satisfy some outstanding subscriptions on this VM (but from different actors)