Oberon || Library || Module Index || Search Engine || Definition || Module
TYPE ImportedRoot = POINTER TO ImportedRootRec; TYPE ImportedRootRec = RECORD (Disciplines.ObjectRec) END;
PROCEDURE Import(address: Networks.Address; path: ARRAY OF CHAR; auth: Shards.Lid; errors: RelatedEvents.Object); PROCEDURE ImportR(address: Networks.Address; root: Names.Node; path: ARRAY OF CHAR; auth: Shards.Lid; errors: RelatedEvents.Object); PROCEDURE TemporaryImport(address: Networks.Address; path: ARRAY OF CHAR; auth: Shards.Lid; errors: RelatedEvents.Object; VAR import: ImportedRoot); PROCEDURE TemporaryImportR(address: Networks.Address; root: Names.Node; path: ARRAY OF CHAR; auth: Shards.Lid; errors: RelatedEvents.Object; VAR import: ImportedRoot);
Robustness, as defined by RobustObjects, is the ability of a proxy object of RemoteObjects to survive a broken network connection or the termination of the original object. RobustRoots, in contrast, does not preserve the proxy objects of imported roots. Instead, RobustRoots just attempts to re-import a terminated root object through NamesBootService and, if this is successful, RobustRoots attempts to insert the new proxy object under the given path name. If re-imports fail, new attempts are scheduled after some delay.
Hence, RobustRoots does not replace RobustObjects but allows to tie separate name spaces reliably such that the techniques of PathConditions and RobustObjects work over name spaces that extend over multiple Oberon name servers.
A robust import relation can be easily terminated for objects imported by RobustObjects by terminating the proxy object. This, however, does not work for root nodes imported by RobustRoots as RobustRoots would immediately attempt to re-import the root node again. The persistence of RobustRoots to re-import a root node can be stopped by following two methods only:
All four import procedures take an address parameter that is directly passed to NamesBootService.Import. The path is interpreted by Paths relatively to Names.root (Import and TemporaryImport) or to the given root (ImportR and TemporaryImportR). The authorization shard auth is passed to Names.Insert. TemporaryImport and TemporaryImportR return a reference object which upon termination stops all further attempts to re-import the root node.
Oberon || Library || Module Index || Search Engine || Definition || Module