Next: Opportunistic, Previous: Methods, Up: actor-lib: A standard library of sorts [Contents][Index]
The (goblins actor-lib nonce-registry) module provides an actor
to store and retrieve references using swiss-nums. A
swiss-num is a string of digits which grants anyone with that
string of digits access to whatever it refers to, much as a Swiss bank
account number grants access to the bank account (hence the name).
Create and return, as values, an actor which registers and an
actor which locates objects using Swiss nums.
The first returned value, the registry, has two methods:
register, which accepts an object reference and an optional
swiss-num, and returns the swiss-num; and fetch,
which accepts a swiss-num and returns a reference to the
appropriate object. The second returned value, the locator,
only has one method, fetch, which operates exactly the same as
that of registry.
To clarify, here’s an example:
> (use-modules (goblins actor-lib cell)) > (define-values (nr nr-locator) (spawn-nonce-registry-and-locator)) > nr => #<local-object ^nonce-registry> > (define chest (spawn ^cell 'gold)) > (define chest-token ($ nr 'register chest)) > chest-token => #vu8(<32 random 8-bit unsigned integers>) > ($ nr 'fetch chest-token) => #<local-object ^cell> > ($ nr-locator 'fetch chest-token) => #<local-object ^cell>