The aether Reference Manual

This is the aether Reference Manual, version 1.1.0, generated automatically by Declt version 4.0 beta 2 "William Riker" on Mon Feb 26 14:31:14 2024 GMT+0.

Table of Contents


1 Introduction


2 Systems

The main system appears first, followed by any subsystem dependency.


2.1 aether

A DSL for emulating an actor-based distributed system, housed on a family of emulated devices.

Author

Eric Peterson <>

License

MIT (See LICENSE.md)

Version

1.1.0

Dependencies
  • alexandria (system).
  • policy-cond (system).
  • cl-heap (system).
  • global-vars (system).
Source

aether.asd.

Child Components

3 Modules

Modules are listed depth-first from the system components tree.


3.1 aether/debug

Dependency

cheap-heap.lisp (file).

Source

aether.asd.

Parent Component

aether (system).

Child Components

3.2 aether/process

Dependency

network.lisp (file).

Source

aether.asd.

Parent Component

aether (system).

Child Components

4 Files

Files are sorted by type and then listed depth-first from the systems components trees.


4.1 Lisp


4.1.1 aether/aether.asd

Source

aether.asd.

Parent Component

aether (system).

ASDF Systems

aether.


4.1.2 aether/package.lisp

Source

aether.asd.

Parent Component

aether (system).

Packages

aether.


4.1.3 aether/utilities.lisp

Dependency

package.lisp (file).

Source

aether.asd.

Parent Component

aether (system).

Public Interface
Internals

4.1.4 aether/queue.lisp

Dependency

utilities.lisp (file).

Source

aether.asd.

Parent Component

aether (system).

Public Interface

4.1.5 aether/cheap-heap.lisp

Dependency

queue.lisp (file).

Source

aether.asd.

Parent Component

aether (system).

Public Interface

4.1.6 aether/debug/logger.lisp

Source

aether.asd.

Parent Component

debug (module).

Public Interface
Internals

4.1.7 aether/debug/trace.lisp

Dependency

logger.lisp (file).

Source

aether.asd.

Parent Component

debug (module).

Internals

4.1.8 aether/event.lisp

Dependency

debug (module).

Source

aether.asd.

Parent Component

aether (system).

Public Interface
Internals

4.1.9 aether/message.lisp

Dependency

event.lisp (file).

Source

aether.asd.

Parent Component

aether (system).

Public Interface
Internals

4.1.10 aether/courier.lisp

Dependency

message.lisp (file).

Source

aether.asd.

Parent Component

aether (system).

Public Interface
Internals

4.1.12 aether/process/process.lisp

Source

aether.asd.

Parent Component

process (module).

Public Interface
Internals

4.1.13 aether/process/dpu-helpers.lisp

Dependency

process.lisp (file).

Source

aether.asd.

Parent Component

process (module).

Public Interface
Internals

4.1.14 aether/process/dereference.lisp

Dependency

dpu-helpers.lisp (file).

Source

aether.asd.

Parent Component

process (module).

Public Interface
Internals

4.1.15 aether/process/emissary.lisp

Dependency

dereference.lisp (file).

Source

aether.asd.

Parent Component

process (module).

Public Interface

define-message-subordinate (macro).

Internals

4.1.16 aether/rpc.lisp

Dependency

process (module).

Source

aether.asd.

Parent Component

aether (system).

Public Interface

4.1.17 aether/lock.lisp

Dependency

rpc.lisp (file).

Source

aether.asd.

Parent Component

aether (system).

Public Interface
Internals

4.1.18 aether/cast.lisp

Dependency

lock.lisp (file).

Source

aether.asd.

Parent Component

aether (system).

Public Interface
Internals

5 Packages

Packages are listed by definition order.


5.1 aether

Source

package.lisp.

Use List

common-lisp.

Public Interface
Internals

6 Definitions

Definitions are sorted by export status, category, package, and then by lexicographic order.


6.1 Public Interface


6.1.1 Special variables

Special Variable: *local-courier*

Bound to the ‘COURIER’ that services this process.

Package

aether.

Source

courier.lisp.

Special Variable: *logger*
Package

aether.

Source

logger.lisp.


6.1.2 Macros

Macro: define-broadcast-handler (handler-name ((process process-type) (message message-type) now) &body body)

This macro augments ‘DEFINE-MESSAGE-HANDLER’, by pushing a ‘BROADCAST’ command onto the ‘PROCESS’s command stack. This command takes no arguments, but expects a ‘BROADCAST-FRAME’ to be on the data stack when it is called. Thus, either the handler must prepare the data frame, or it must be prepared by whatever script is pushed onto the command stack by the handler. Additionally, inside the context of ‘DEFINE-BROADCAST-HANDLER’ we have access to a pair of helper functions:

1. ‘PUSH-BROADCAST-FRAME’, which creates a ‘BROADCAST-FRAME’ and pushes it onto the data stack. If no ‘MESSAGE’ is provided to the function, it defaults to the ‘MESSAGE’ currently being handled. If a user calls ‘PUSH-BROADCAST-FRAME’ twice in the same handler, an error will be raised.
2. ‘RETURN-FROM-CAST’, which allows the user to terminate the broadcast operation early by sending up an acknowledgement (optionally specifying its contents) to the original sender of ‘MESSAGE’.

WARNING: ‘RETURN-FROM-CAST’ calls ‘PUSH-BROADCAST-FRAME’ as part of the aborting process. If a frame has already been pushed onto the data stack, we instead alter that frame rather than pushing an additional one (which could have strange consequences). Additionally, it is important to note that ‘RETURN-FROM-CAST’ uses ‘FINISH-WITH-SCHEDULING’ in order to return from the handler early.

Package

aether.

Source

cast.lisp.

Macro: define-convergecast-handler (handler-name ((process process-type) (message message-type) now) &body body)

This macro augments ‘DEFINE-MESSAGE-HANDLER’, by pushing a ‘CONVERGECAST’ command onto the ‘PROCESS’s command stack. This command takes no arguments, but expects a ‘CONVERGECAST-FRAME’ to be on the data stack when it is called. Thus, either the handler must prepare the data frame, or it must be prepared by whatever script is pushed onto the command stack by the handler. Additionally, inside the context of ‘DEFINE-CONVERGECAST-HANDLER’ we have access to a pair of helper functions:

1. ‘PUSH-CONVERGECAST-FRAME’, which creates a ‘CONVERGECAST-FRAME’ and pushes it onto the data stack. If no ‘MESSAGE’ is provided to the function, it defaults to the ‘MESSAGE’ currently being handled. If a user calls ‘PUSH-BROADCAST-FRAME’ twice in the same handler, an error will be raised.
2. ‘RETURN-FROM-CAST’, which allows the user to terminate the convergecast operation early by sending up an acknowledgement (optionally specifying its contents) to the original sender of ‘MESSAGE’. It is recommended that a value is provided when returning from a convergecast, as it will be passed to a function (the function provided to the ‘CONVERGECAST-FRAME’) when received by the original sender.

WARNING: ‘RETURN-FROM-CAST’ calls ‘PUSH-CONVERGECAST-FRAME’ as part of the aborting process. If a frame has already been pushed onto the data stack, we instead alter that frame rather than pushing an additional one (which could have strange consequences). Additionally, it is important to note that ‘RETURN-FROM-CAST’ uses ‘FINISH-WITH-SCHEDULING’ in order to return from the handler early.

Package

aether.

Source

cast.lisp.

Macro: define-message-dispatch (node-type &body clauses)

Defines "automatic" message handlers associated to a particular subtype of ‘PROCESS’. Each handler is specified by a tuple of form (MESSAGE-TYPE MESSAGE-HANDLER &OPTIONAL GUARD). As with ‘RECEIVE-MESSAGE’, each clause is processed in turn, according to the following rules:

+ If supplied, ‘GUARD’ is evaluated with the ‘PROCESS’ in question bound to the place ‘PROCESS-TYPE’. If ‘GUARD’ evaluates to NIL, proceed to the next clause.
+ Check the message queue at the public address for an item of type ‘MESSAGE-TYPE’. If such a message is found, call the associated ‘MESSAGE-HANDLER’ with lambda triple (PROCESS MESSAGE TIME). Otherwise, proceed to the next clause.

NOTES:
+ If no clause is matched, execution proceeds to the semantics specified by ‘DEFINE-PROCESS-UPKEEP’.
+ Automatically appends a ‘MESSAGE-RTS’ clause which calls ‘HANDLE-MESSAGE-RTS’ and results in an error. Because of this, we set ‘CATCH-RTS?’ to NIL when processing clauses and building ‘RECEIVE-MESSAGE’ blocks. Otherwise, it would be impossible to override the default handling of ‘MESSAGE-RTS’es. + ‘PROCESS-PERUSE-INBOX?’ is passed along to ‘RECEIVE-MESSAGE’, where it determines how we search for a message to handle.

WARNING: These actions are to be thought of as "interrupts". Accordingly, you will probably stall the underlying ‘PROCESS’ if you perform some waiting action here, like the analogue of a ‘SYNC-RECEIVE’.

Package

aether.

Source

process.lisp.

Macro: define-message-handler (handler-name ((process process-type) (message message-type) now) &body body)

Defines a function to be invoked by DEFINE-MESSAGE-DISPATCH.

Package

aether.

Source

process.lisp.

Macro: define-message-subordinate (handler-name ((process process-type) (message message-type) now) &body body)

Interrupt-based RPC handlers are expected to emit a reply to the caller. This macro augments DEFINE-MESSAGE-HANDLER to reply to the caller with the last evaluated form.

Package

aether.

Source

emissary.lisp.

Macro: define-object-handler (((object-variable object-type) time-variable) &body body)

Defines a default event handler for OBJECT-TYPE.

Package

aether.

Source

event.lisp.

Macro: define-process-upkeep (((process-name process-type) now) (command &rest command-args) &body body)

Defines the behavior of a particular PROCESS (of type PROCESS-TYPE) as it enacts a COMMAND.

PROCESS is COMMAND is a KEYWORD, and COMMAND-ARGS is a DESTRUCTURING-BIND-LAMBDA-LIST.

Locally enables the use of the function PROCESS-DIE and the special form SYNC-RECEIVE.

Package

aether.

Source

process.lisp.

Macro: define-rpc-handler (handler-name ((process process-type) (message message-type) now) &body body)

Interrupt-based RPC handlers are expected to emit a reply to the caller. This macro augments DEFINE-MESSAGE-HANDLER to reply to the caller with the last evaluated form.

Package

aether.

Source

rpc.lisp.

Macro: destructuring-places (lambda-list expression &body body)

A variant of DESTRUCTURING-BIND that provides SETFs in the style of WITH-SLOTS, but it can only handle the required part of a DESTRUCTURING-LAMBDA-LIST.

Package

aether.

Source

utilities.lisp.

Macro: dohash (((key value) hash-table &optional return-form) &body body)

Iterates over HASH-TABLE, defining a lexical binding KEY and a place VALUE for each iteration of BODY. Optionally evaluates RETURN-FORM at termination and returns its result; otherwise returns NIL.

WARNING: This routine is based on MAPHASH, which has undefined behavior if the structure of HASH-TABLE is modified during iteration (e.g., the addition of new entries, or the modification of any entry not currently being processed).

Package

aether.

Source

utilities.lisp.

Macro: ignorant-lambda (&body body)

Defines an anonymous function that discards all of its arguments.

Package

aether.

Source

utilities.lisp.

Macro: initialize-and-return ((&rest bindings) &body body)

Returns (in reverse order, as VALUES) the contents of BINDINGS after the evaluation of BODY.

Package

aether.

Source

utilities.lisp.

Macro: receive-message ((address message &key timeout catch-rts? peruse-inbox? &allow-other-keys) &body clauses)

Peruses the mailbox at ‘ADDRESS’ for a ‘MESSAGE’ which matches one of the provided ‘CLAUSES’. Each clause has the form (MESSAGE-TYPE &BODY BODY). Clauses are processed according to the following Erlang-ian rules:

+ Each clause is processed in the order supplied.
+ If a clause is matched, no further clauses are processed.
+ When ‘PERUSE-INBOX?’ is T, each clause (processed in order) searches the whole inbox(in latest-to-most-recent order) for a ‘MESSAGE-TYPE’ match. When NIL, each clause just looks at the first message in the inbox for a ‘MESSAGE-TYPE’ match. + If a waiting message of the appropriate type is found, it is bound to ‘MESSAGE’ and ‘BODY’ is processed.

NOTES:

When ‘CATCH-RTS?’ is T, we append a ‘MESSAGE-RTS’ clause that throws an error.

Permits a clause with head ‘OTHERWISE’ which is executed when no such waiting message is found.

Returns as a secondary value whether a message was processed. (An ‘OTHERWISE’ clause also results in a secondary value of NIL.)

Package

aether.

Source

courier.lisp.

Macro: sync-receive ((sync-channel sync-message-place) &body sync-clauses)

Models a blocking ‘RECEIVE-MESSAGE’ command.

IMPORTANT WARNING: ‘SYNC-RECEIVE’ returns after it finishes executing its body. Any code following a ‘SYNC-RECEIVE’ **will not** be executed.

NOTE: ‘MESSAGE-RTS’ replies must be explicitly handled. Otherwise, the default behavior is to throw an error, which can be seen in the definition of ‘RECEIVE-MESSAGE’.

NOTE: SYNC-RECEIVE is not available outside the body of DEFINE-PROCESS-UPKEEP.

Package

aether.

Source

dpu-helpers.lisp.

Macro: sync-rpc (message (result-place-or-list destination &key returned? message-type message-unpacker) &body body)

Performs a synchronized RPC call. Only allowed inside the body of DEFINE-PROCESS-UPKEEP.

Sends ‘MESSAGE’ to ‘DESTINATION’, waits for a reply (of type ‘MESSAGE-TYPE’), and unpacks the reply (using ‘MESSAGE-UNPACKER’) into ‘RESULT-PLACE-OR-LIST’.

If ‘RETURNED?’ is supplied and this call generates a ‘MESSAGE-RTS’ reply, then ‘RETURNED?’ will be flagged and control resumes. Otherwise, controlled is interrupted by an error.

Package

aether.

Source

rpc.lisp.

Macro: with-address-dereferencing (() &body body)

Context macro which permits use of DEREFERENCE in its body.

Package

aether.

Source

dereference.lisp.

Macro: with-courier ((&rest keyword-arguments) &body body)

Initializes the ‘*LOCAL-COURIER*’ parameter as a fresh ‘COURIER’. Also takes a list of ‘KEYWORD-ARGUMENT’s (e.g. :processing-clock-rate 20) that are passed along to the constructor.

Package

aether.

Source

courier.lisp.

Macro: with-futures (&body body)

WARNING: This macro is deprecated in favor of ‘WITH-SCHEDULING‘ and will be removed in a future release.

Stores an implicit set of EVENT objects to return when exiting the WITH-FUTURES block.

Provides some helper functions: FUTURE, FUTURE*, and FINISH-WITH-FUTURES.

Package

aether.

Source

event.lisp.

Macro: with-replies ((replies &key returned? close? message-type message-unpacker) addresses &body body)

Amasses results from ‘MESSAGE-RPC-DONE’ messages received on ‘ADDRESSES’ into a list stored in ‘REPLIES’. This list is sorted in the same order as ‘ADDRESSES’. Execution of ‘BODY’ resumes when each address has received such a message.

If ‘RETURNED?’ is supplied, then in the event of a ‘MESSAGE-RTS’, this flag is set. If it is not supplied, this raises an error.

Typical use looks like:

(with-replies
(replies :returned? returned?)
(send-message-batch #’make-blossom-msg-scan targets)
(let ((reply (reduce #’unify-pongs replies)))
(send-message reply-channel reply)))

NOTE: WITH-REPLIES is not available outside the body of DEFINE-PROCESS-UPKEEP.

Package

aether.

Source

dpu-helpers.lisp.

Macro: with-scheduling (&body body)

Stores an implicit set of EVENT objects to return when exiting the WITH-SCHEDULING block.

Provides some helper functions: SCHEDULE, SCHEDULE*, and FINISH-WITH-SCHEDULING.

Package

aether.

Source

event.lisp.

Macro: with-simulation ((name (&rest starting-objects)) &body body)

Initializes a new SIMULATION bound to name NAME using MAKE-SIMULATION and adds an EVENT to the SIMULATION at time 0 for every object in STARTING-OBJECTs.

Package

aether.

Source

event.lisp.

Macro: with-transient-logger (() &body body)

Initialize a fresh logger. Returns log contents on close.

Package

aether.

Source

logger.lisp.


6.1.3 Ordinary functions

Function: address= (left right)

Tests for semantic equality of addresses.

Package

aether.

Source

message.lisp.

Function: canary-all (&rest canaries)

Announce a trigger when all of the CANARIES are simultaneously triggered.

Package

aether.

Source

event.lisp.

Function: canary-any (&rest canaries)

Announce a trigger when any one of the CANARIES is triggered.

Package

aether.

Source

event.lisp.

Function: canary-process (process)

Pause a simulation when PROCESS halts.

Package

aether.

Source

event.lisp.

Function: canary-timeout (timeout)

Throw an error when TIMEOUT arrives.

Package

aether.

Source

event.lisp.

Function: canary-until (until)

Pause a simulation after UNTIL passes.

Package

aether.

Source

event.lisp.

Function: cheap-heap-dequeue (heap)
Package

aether.

Source

cheap-heap.lisp.

Function: cheap-heap-enqueue (heap item key)
Package

aether.

Source

cheap-heap.lisp.

Function: cheap-heap-peep (heap)
Package

aether.

Source

cheap-heap.lisp.

Reader: courier-processing-clock-rate (instance)
Writer: (setf courier-processing-clock-rate) (instance)
Package

aether.

Source

courier.lisp.

Target Slot

processing-clock-rate.

Function: dereference (address)

Looks up the Lisp PROCESS object which owns the provided public ADDRESS. Only functions within WITH-ADDRESS-DEREFERENCING, not hardware-realistic, only for use during debugging.

Package

aether.

Source

dereference.lisp.

Function: finish-with-futures (&optional event-list)

WARNING: This function is deprecated in favor of ‘FINISH-WITH-SCHEDULING‘ and will be removed in a future release.

Breaks out of WITH-FUTURES. If EVENTS is supplied, returns EVENTS in place of the implicit event list.

Package

aether.

Source

event.lisp.

Function: finish-with-scheduling (&optional event-list)

Breaks out of WITH-SCHEDULING. If EVENTS is supplied, returns EVENTS in place of the implicit event list.

Package

aether.

Source

event.lisp.

Function: future (fn-or-obj time)

WARNING: This function is deprecated in favor of ‘SCHEDULE‘ and will be removed in a future release.

Installs a future EVENT object, which invokes FN-OR-OBJ at the specified TIME.

Package

aether.

Source

event.lisp.

Function: future* (event-list)

WARNING: This function is deprecated in favor of ‘SCHEDULE*‘ and will be removed in a future release.

Installs a list of future EVENT objects.

Package

aether.

Source

event.lisp.

Function: hash-address (address)
Package

aether.

Source

message.lisp.

Function: log-entry (&rest initargs &key logger source source-type time entry-type &allow-other-keys)

Injects a log entry.

Package

aether.

Source

logger.lisp.

Reader: logger-entries (instance)
Writer: (setf logger-entries) (instance)
Package

aether.

Source

logger.lisp.

Target Slot

entries.

Function: make-broadcast-frame (&key aborting? handle-rts? message targets)
Package

aether.

Source

cast.lisp.

Function: make-cheap-heap ()
Package

aether.

Source

cheap-heap.lisp.

Function: make-convergecast-frame (&key aborting? handle-rts? message targets func input)
Package

aether.

Source

cast.lisp.

Function: make-courier (&key queue inboxes secrets processing-clock-rate default-routing-time-step id neighbors)
Package

aether.

Source

courier.lisp.

Function: make-courier-grid (size-i size-j)

Constructs a (size-i x size-j) grid of COURIER-GRIDDED instances.

Package

aether.

Source

network.lisp.

Function: make-event (&key callback time)
Package

aether.

Source

event.lisp.

Function: make-message (&key reply-channel message-id)
Package

aether.

Source

message.lisp.

Function: make-message-lock (&key reply-channel message-id)
Package

aether.

Source

lock.lisp.

Function: make-message-rpc-done (&key reply-channel message-id result)
Package

aether.

Source

message.lisp.

Function: make-message-rts (&key reply-channel message-id)
Package

aether.

Source

message.lisp.

Function: make-message-unlock (&key reply-channel message-id result)
Package

aether.

Source

lock.lisp.

Function: make-q (&rest items)
Package

aether.

Source

queue.lisp.

Function: make-simulation ()

Constructs an empty SIMULATION.

Package

aether.

Source

event.lisp.

Reader: message-reply-channel (instance)
Writer: (setf message-reply-channel) (instance)
Package

aether.

Source

message.lisp.

Target Slot

reply-channel.

Reader: message-rpc-done-result (instance)
Writer: (setf message-rpc-done-result) (instance)
Package

aether.

Source

message.lisp.

Target Slot

result.

Function: peek (list)

Synonym for the PEEK operation on a stack.

Package

aether.

Source

utilities.lisp.

Function: print-log (entries &optional stream)
Package

aether.

Source

logger.lisp.

Function: print-message-report (&optional logger)

Print a report of the different types of messages sent in ‘LOGGER’, and a count for each. Calls ‘MESSAGE-LOG’ and ‘MESSAGE-REPORT’.

Package

aether.

Source

logger.lisp.

Function: process-continuation (process &rest commands)

Installs ‘COMMANDS’ to be executed as next steps by ‘PROCESS’.

Package

aether.

Source

process.lisp.

Function: process-die ()

PROCESS-DIE causes the current PROCESS to release its public mailbox and exit the parent SIMULATION loop.

NOTE: PROCESS-DIE is not available outside the body of DEFINE-PROCESS-UPKEEP.

Package

aether.

Source

dpu-helpers.lisp.

Function: process-public-address (process)

Extracts the public ADDRESS associated to PROCESS.

Package

aether.

Source

process.lisp.

Function: push-broadcast-frame (&key aborting? handle-rts? message targets)

Convenience function for creating a ‘BROADCAST-FRAME’ and pushing it onto the ‘PROCESS-DATA-STACK’.

Package

aether.

Source

cast.lisp.

Function: push-convergecast-frame (&key aborting? handle-rts? func input message targets)

Convenience function for creating a ‘CONVERGECAST-FRAME’ and pushing it onto the ‘PROCESS-DATA-STACK’.

Package

aether.

Source

cast.lisp.

Function: q-deq (q)
Package

aether.

Source

queue.lisp.

Function: q-deq-first (q pred)

Dequeue the first message in ‘Q’ that satisfies ‘PRED’.

Package

aether.

Source

queue.lisp.

Function: q-deq-when (q pred)

Dequeue the message at the front of ‘Q’ when ‘PRED’ is T.

Package

aether.

Source

queue.lisp.

Function: q-empty (q)
Package

aether.

Source

queue.lisp.

Function: q-enq (el q)
Package

aether.

Source

queue.lisp.

Function: q-len (q)
Package

aether.

Source

queue.lisp.

Function: q-peek (q)
Package

aether.

Source

queue.lisp.

Function: q-push (q el)
Package

aether.

Source

queue.lisp.

Function: register (&key courier channel secret)

Registers a fresh channel over which messages can be transmitted and received.

Package

aether.

Source

courier.lisp.

Function: reset-logger (&optional logger)

Empties the current logger of all entries.

Package

aether.

Source

logger.lisp.

Function: return-from-cast (&optional value reason)

Allows the user to return early from a broadcast or convergecast operation.

Package

aether.

Source

cast.lisp.

Function: schedule (fn-or-obj time)

Installs a future EVENT object, which invokes FN-OR-OBJ at the specified TIME.

Package

aether.

Source

event.lisp.

Function: schedule* (event-list)

Installs a list of future EVENT objects.

Package

aether.

Source

event.lisp.

Function: send-message (destination payload)

Sends the message ‘PAYLOAD’ to be received at ‘DESTINATION’, an ‘ADDRESS’. Returns the ‘REPLY-CHANNEL’ of the ‘PAYLOAD’, if any.

Package

aether.

Source

courier.lisp.

Function: send-message-batch (payload-constructor destinations &key replies?)

Sends a batch of messages to the ‘ADDRESS’es housed in ‘DESTINATIONS’. Each message is constructed afresh using ‘PAYLOAD-CONSTRUCTOR’, supplied with a freshly registered reply channel, and the list of reply channels is returned as a result.

Package

aether.

Source

courier.lisp.

Function: simulation-add-event (simulation event)

Installs EVENT into SIMULATION for later processing.

Package

aether.

Source

event.lisp.

Function: simulation-run (simulation &key canary)

Processes EVENTs belonging to SIMULATION, until either SIMULATION is exhausted or CANARY evaluates to T.

Package

aether.

Source

event.lisp.

Function: spawn-process (class &rest initargs)

Preferred mechanism for instantiating an object inherting from PROCESS. Contains debug hooks.

Package

aether.

Source

dereference.lisp.

Function: unregister (address)

Unregisters a channel, so that messages can no longer be transmitted or received over it.

Package

aether.

Source

courier.lisp.


6.1.4 Generic functions

Generic Function: handle-message-lock (process message now)
Package

aether.

Methods
Method: handle-message-lock ((process process-lockable) (message message-lock) now)

Attempts to lock PROCESS.

Source

lock.lisp.

Generic Reader: process-clock-rate (object)
Generic Writer: (setf process-clock-rate) (object)
Package

aether.

Methods
Reader Method: process-clock-rate ((process process))
Writer Method: (setf process-clock-rate) ((process process))

The number of times per unit of ‘SIMULATION’ time that this ‘PROCESS’ gets to act.

Source

process.lisp.

Target Slot

process-clock-rate.

Generic Reader: process-command-stack (object)
Generic Writer: (setf process-command-stack) (object)
Package

aether.

Methods
Reader Method: process-command-stack ((process process))
Writer Method: (setf process-command-stack) ((process process))

A stack populated with the instructions yet to be executed by this PROCESS. Modify this using ‘PROCESS-CONTINUATION’.

Source

process.lisp.

Target Slot

process-command-stack.

Generic Reader: process-data-stack (object)
Generic Writer: (setf process-data-stack) (object)
Package

aether.

Methods
Reader Method: process-data-stack ((process process))
Writer Method: (setf process-data-stack) ((process process))

A stack populated with data, typically "data frames" pushed and popped by sequences of related commands.

Source

process.lisp.

Target Slot

process-data-stack.

Generic Reader: process-debug? (object)
Generic Writer: (setf process-debug?) (object)
Package

aether.

Methods
Reader Method: process-debug? ((process process))
Writer Method: (setf process-debug?) ((process process))

A boolean flag. If T, debug messages are logged.

Source

process.lisp.

Target Slot

process-debug?.

Generic Reader: process-exhaust-inbox? (object)
Generic Writer: (setf process-exhaust-inbox?) (object)
Package

aether.

Methods
Reader Method: process-exhaust-inbox? ((process process))
Writer Method: (setf process-exhaust-inbox?) ((process process))

Defaults to T, which means that the ‘PROCESS’ will go through its entire message queue in a single clock tick, and then (in the same tick) take an action specified by the command stack. Otherwise, the ‘PROCESS’ will immediately execute a command after handling either zero or one message(s).

Source

process.lisp.

Target Slot

process-exhaust-inbox?.

Generic Reader: process-lockable-aborting? (object)
Package

aether.

Methods
Reader Method: process-lockable-aborting? ((process-lockable process-lockable))

automatically generated reader method

Source

lock.lisp.

Target Slot

aborting?.

Generic Writer: (setf process-lockable-aborting?) (object)
Package

aether.

Methods
Writer Method: (setf process-lockable-aborting?) ((process-lockable process-lockable))

automatically generated writer method

Source

lock.lisp.

Target Slot

aborting?.

Generic Reader: process-lockable-done-signal (object)
Package

aether.

Methods
Reader Method: process-lockable-done-signal ((process-lockable process-lockable))

automatically generated reader method

Source

lock.lisp.

Target Slot

done-signal.

Generic Writer: (setf process-lockable-done-signal) (object)
Package

aether.

Methods
Writer Method: (setf process-lockable-done-signal) ((process-lockable process-lockable))

automatically generated writer method

Source

lock.lisp.

Target Slot

done-signal.

Generic Reader: process-lockable-locked? (object)
Package

aether.

Methods
Reader Method: process-lockable-locked? ((process-lockable process-lockable))

automatically generated reader method

Source

lock.lisp.

Target Slot

locked?.

Generic Writer: (setf process-lockable-locked?) (object)
Package

aether.

Methods
Writer Method: (setf process-lockable-locked?) ((process-lockable process-lockable))

automatically generated writer method

Source

lock.lisp.

Target Slot

locked?.

Generic Function: process-lockable-targets (process-lockable)

Calculates the list of ADDRESSes to acquire recursive locks from when PROCESS-LOCKABLE receives a lock request.

Package

aether.

Source

lock.lisp.

Generic Reader: process-peruse-inbox? (object)
Generic Writer: (setf process-peruse-inbox?) (object)
Package

aether.

Methods
Reader Method: process-peruse-inbox? ((process process))
Writer Method: (setf process-peruse-inbox?) ((process process))

Defaults to T, which means that the ‘PROCESS’ will search through the whole inbox when trying to find a match for clause. Otherwise, the ‘PROCESS’ will only look at the first message in the inbox. Essentially toggles between clause-order precedence and inbox-order predence.

Source

process.lisp.

Target Slot

process-peruse-inbox?.


6.1.5 Standalone methods

Method: print-object ((object process) stream)
Source

process.lisp.

Method: print-object ((object courier) stream)
Source

courier.lisp.

Method: print-object ((object address) stream)
Source

message.lisp.


6.1.6 Structures

Structure: address

Signifies a channel over which objects can communicate.

NOTE: The SECRET field is "optional", in that only processes that possess the secret can receive on and unregister the channel, but all processes—including those without the secret—can send on the channel.

Package

aether.

Source

message.lisp.

Direct superclasses

structure-object.

Direct methods

print-object.

Direct slots
Slot: courier
Initform

(aether::courier-id aether:*local-courier*)

Readers

address-courier.

Writers

(setf address-courier).

Slot: channel
Readers

address-channel.

Writers

(setf address-channel).

Slot: secret
Readers

address-secret.

Writers

(setf address-secret).

Structure: broadcast-frame

Data frame for a ‘BROADCAST’ operation. The ‘ABORTING?’ flag is used to signal to a ‘BROADCAST’ or ‘CONVERGECAST’ command to terminate immediately. If the operation doesn’t abort, the ‘MESSAGE’ is broadcasted to ‘TARGETS’. If we are awaiting replies from the broadcast, we can set ‘HANDLE-RTS?’ to T if we want to pass a ‘:RETURNED?’ keyword argument to ‘WITH-REPLIES’ (and thus handle RTSes gracefully).

Package

aether.

Source

cast.lisp.

Direct superclasses

structure-object.

Direct subclasses

convergecast-frame.

Direct slots
Slot: aborting?
Type

boolean

Readers

broadcast-frame-aborting?.

Writers

(setf broadcast-frame-aborting?).

Slot: handle-rts?
Type

boolean

Readers

broadcast-frame-handle-rts?.

Writers

(setf broadcast-frame-handle-rts?).

Slot: message
Type

(or null aether:message)

Readers

broadcast-frame-message.

Writers

(setf broadcast-frame-message).

Slot: targets
Type

list

Readers

broadcast-frame-targets.

Writers

(setf broadcast-frame-targets).

Structure: convergecast-frame

Data frame for a ‘CONVERGECAST’ operation. The ‘INPUT’ is the value calculated at the current level of recursion, to be passed to ‘FUNC’ along with the ‘REPLIES’ from the subsequent level of recursion. The value V passed up is determined as V = (FUNCALL FUNC INPUT REPLIES), and thus the definition of ‘FUNC’ should be something like:

DEFUN FUNC INPUT REPLIES

Where ‘REPLIES’ is assumed to be a ‘LIST’. Additionally, when ‘HANDLE-RTS?’ is true, ‘FUNC’ should be constructed to handle NIL values in ‘INPUT’ or ‘REPLIES’ gracefully. Inherits from ‘BROADCAST-FRAME’.

Package

aether.

Source

cast.lisp.

Direct superclasses

broadcast-frame.

Direct slots
Slot: func
Type

(or null function)

Readers

convergecast-frame-func.

Writers

(setf convergecast-frame-func).

Slot: input
Readers

convergecast-frame-input.

Writers

(setf convergecast-frame-input).

Structure: courier

A component in the message-passing apparatus.

‘QUEUE’: The receive queue of messages which have not yet been forwarded or stored. Each entry is of the form (COURIER-ID CHANNEL &REST PAYLOAD).
‘INBOXES’: A hash table mapping channels serviced by this courier to mailbox queues.
‘SECRETS’: A hash table mapping channels serviced by this courier to the private sigils used to distinguish mailbox owners.
‘ID’: A unique identifier for this courier. WARNING: Expect subclasses of ‘COURIER’ to require specific types and values here.
‘NEIGHBORS’: Used to store routing information. WARNING: By default, this is a hash mapping courier ‘ID’s in the network to their object instances. Expect subclasses of ‘COURIER’ to install different types and values here.

Package

aether.

Source

courier.lisp.

Direct superclasses

structure-object.

Direct subclasses

courier-gridded.

Direct methods
Direct slots
Slot: queue
Initform

(aether:make-q)

Readers

courier-queue.

Writers

(setf courier-queue).

Slot: inboxes
Initform

(make-hash-table :test (quote eq))

Readers

courier-inboxes.

Writers

(setf courier-inboxes).

Slot: secrets
Initform

(make-hash-table :test (quote eq))

Readers

courier-secrets.

Writers

(setf courier-secrets).

Slot: processing-clock-rate
Initform

aether::*courier-processing-clock-rate*

Readers

courier-processing-clock-rate.

Writers

(setf courier-processing-clock-rate).

Slot: default-routing-time-step
Initform

aether::*routing-time-step*

Readers

courier-default-routing-time-step.

Writers

(setf courier-default-routing-time-step).

Slot: id
Initform

(aether::get-courier-index)

Readers

courier-id.

Writers

(setf courier-id).

Slot: neighbors
Initform

(make-hash-table)

Readers

courier-neighbors.

Writers

(setf courier-neighbors).

Structure: event

Wrapper for a particular event.

Package

aether.

Source

event.lisp.

Direct superclasses

structure-object.

Direct slots
Slot: callback
Readers

event-callback.

Writers

This slot is read-only.

Slot: time
Package

common-lisp.

Type

(rational 0)

Initform

0

Readers

event-time.

Writers

This slot is read-only.

Structure: message

Base type for messages transmitted along ‘COURIER’s.

Package

aether.

Source

message.lisp.

Direct superclasses

structure-object.

Direct subclasses
Direct slots
Slot: reply-channel
Type

(or null aether:address)

Readers

message-reply-channel.

Writers

(setf message-reply-channel).

Slot: message-id
Type

integer

Initform

(aether::get-message-index)

Readers

message-message-id.

Writers

(setf message-message-id).

Structure: message-lock

Sent to establish a lock.

Package

aether.

Source

lock.lisp.

Direct superclasses

message.

Direct methods

handle-message-lock.

Structure: message-rpc-done

Reply when an RPC message finishes.

Package

aether.

Source

message.lisp.

Direct superclasses

message.

Direct slots
Slot: result
Readers

message-rpc-done-result.

Writers

(setf message-rpc-done-result).

Structure: message-rts

This message is generated as a fresh automatic response when an original message is sent to a nonexistent (or closing) mailbox.

If the original message’s REPLY-CHANNEL is not set, no MESSAGE-RTS object is built.

NOTE: "RTS" is short for "Return To Sender".

Package

aether.

Source

message.lisp.

Direct superclasses

message.

Direct methods

handle-message-rts.

Structure: simulation

Container for a set of EVENTs to be processed as part of a simulation.

CONTENTS: The set of EVENTs. This field is not for direct access; instead, add events using SIMULATION-ADD-EVENT.

HORIZON: The timestamp before which all events have been simulated. Ensures that a SIMULATION has a fixed history.

Package

aether.

Source

event.lisp.

Direct superclasses

structure-object.

Direct slots
Slot: contents
Type

list

Readers

simulation-contents.

Writers

(setf simulation-contents).

Slot: horizon
Type

(real 0)

Initform

0

Readers

simulation-horizon.

Writers

(setf simulation-horizon).


6.1.7 Classes

Class: process

Models an individual concurrently-executing process. On each tick, a ‘PROCESS’ first checks its public mailbox for messages matched by ‘DEFINE-MESSAGE-DISPATCH’ and, if an appropriate message is found, that message is processed. If no matching message is found, the first command in ‘PROCESS-COMMAND-STACK’ is processed instead, according to the semantics defined by ‘DEFINE-PROCESS-UPKEEP’.

IMPORTANT NOTE: Use #’SPAWN-PROCESS to generate a new PROCESS object.

Package

aether.

Source

process.lisp.

Direct subclasses
Direct methods
Direct slots
Slot: process-courier

Holds a reference to the ‘COURIER’ which services this ‘PROCESS’.

Initform

aether:*local-courier*

Initargs

:process-courier

Readers

process-courier.

Writers

(setf process-courier).

Slot: process-key

Holds the ‘PROCESS’s ‘ADDRESS’ on which it receives messages. (Use ‘PROCESS-PUBLIC-ADDRESS’ to extract an ‘ADDRESS’ to be used to send messages to this ‘PROCESS’.)

Initform

(aether:register)

Initargs

:process-key

Readers

process-key.

Writers

(setf process-key).

Slot: process-clock-rate

The number of times per unit of ‘SIMULATION’ time that this ‘PROCESS’ gets to act.

Initargs

:process-clock-rate

Readers

process-clock-rate.

Writers

(setf process-clock-rate).

Slot: process-command-stack

A stack populated with the instructions yet to be executed by this PROCESS. Modify this using ‘PROCESS-CONTINUATION’.

Initform

(sb-int:quasiquote ((aether:start)))

Readers

process-command-stack.

Writers

(setf process-command-stack).

Slot: process-data-stack

A stack populated with data, typically "data frames" pushed and popped by sequences of related commands.

Readers

process-data-stack.

Writers

(setf process-data-stack).

Slot: process-debug?

A boolean flag. If T, debug messages are logged.

Initargs

:debug?

Readers

process-debug?.

Writers

(setf process-debug?).

Slot: process-exhaust-inbox?

Defaults to T, which means that the ‘PROCESS’ will go through its entire message queue in a single clock tick, and then (in the same tick) take an action specified by the command stack. Otherwise, the ‘PROCESS’ will immediately execute a command after handling either zero or one message(s).

Type

boolean

Initform

t

Initargs

:process-exhaust-inbox?

Readers

process-exhaust-inbox?.

Writers

(setf process-exhaust-inbox?).

Slot: process-peruse-inbox?

Defaults to T, which means that the ‘PROCESS’ will search through the whole inbox when trying to find a match for clause. Otherwise, the ‘PROCESS’ will only look at the first message in the inbox. Essentially toggles between clause-order precedence and inbox-order predence.

Type

boolean

Initform

t

Initargs

:process-peruse-inbox?

Readers

process-peruse-inbox?.

Writers

(setf process-peruse-inbox?).

Class: process-lockable

A PROCESS which supports recursive locking.

Package

aether.

Source

lock.lisp.

Direct superclasses

process.

Direct methods
Direct slots
Slot: aborting?
Type

boolean

Readers

process-lockable-aborting?.

Writers

(setf process-lockable-aborting?).

Slot: locked?
Type

boolean

Readers

process-lockable-locked?.

Writers

(setf process-lockable-locked?).

Slot: done-signal
Readers

process-lockable-done-signal.

Writers

(setf process-lockable-done-signal).

Slot: downward-rx-latches
Type

list

Slot: downward-tx-latches
Type

list

Slot: upward-rx-latch
Type

(or null aether:address)

Slot: upward-tx-latch
Type

(or null aether:address)


6.2 Internals


6.2.1 Special variables

Special Variable: *courier-processing-clock-rate*
Package

aether.

Source

courier.lisp.

Special Variable: *dereferencing-table*

Holds a hash map from ADDRESS objects to the Lisp objects that own them.

Package

aether.

Source

dereference.lisp.

Special Variable: *message-traces*

Houses information related to traces.

Package

aether.

Source

trace.lisp.

Special Variable: *routing-time-step*
Package

aether.

Source

courier.lisp.


6.2.2 Macros

Macro: %install-repeat-until ((&body repeater-body) (&body finalizer-body))

Irreversibly transfers control from the current command by replacing it with a ‘:REPEAT-UNTIL’ command with the indicated ‘REPEATER’ and ‘FINALIZER’.

NOTE: %INSTALL-REPEAT-UNTIL is not available outside the body of DEFINE-PROCESS-UPKEEP.

Package

aether.

Source

dpu-helpers.lisp.

Macro: assoc-default (item alist-place default-form &rest kwargs)
Package

aether.

Source

utilities.lisp.

Macro: define-dpu-flet (function-name argument-list &body body)

Defines a local function to be used inside of DEFINE-PROCESS-UPKEEP.

NOTE: Automatically binds ACTIVE?, NOW, and PROCESS-NAME to their values from within D-P-U.

Package

aether.

Source

process.lisp.

Macro: define-dpu-macro (macro-name argument-list &body body)

Defines a local macro to be used inside of DEFINE-PROCESS-UPKEEP.

NOTE: Automatically binds PROCESS-NAME and NOW to their values from within D-P-U.

Package

aether.

Source

process.lisp.

Macro: define-global-counter (counter-name incf-name)
Package

aether.

Source

utilities.lisp.

Macro: hash-let ((binding key table default-form) &body body)

Like GETHASH, except modifies the table.

Package

aether.

Source

utilities.lisp.

Macro: with-traces (() &body body)

Enable tracing over a region of code.

Package

aether.

Source

trace.lisp.


6.2.3 Ordinary functions

Function: %dpu-flet-definitions (&key active? now process-name)

This function produces a list of local function (re)definitions to be supplied in the body of DEFINE-PROCESS-UPKEEP.

NOTE: LOG-ENTRY is treated separately.

Package

aether.

Source

process.lisp.

Function: %dpu-macrolet-definitions (&key process-name now)

This function produces a list of local macro definitions to be supplied in the body of DEFINE-PROCESS-UPKEEP.

Package

aether.

Source

process.lisp.

Function: %make-courier-gridded (&key queue inboxes secrets processing-clock-rate default-routing-time-step id neighbors)
Package

aether.

Source

network.lisp.

Function: %make-simulation (&key contents horizon)
Package

aether.

Source

event.lisp.

Reader: address-channel (instance)
Writer: (setf address-channel) (instance)
Package

aether.

Source

message.lisp.

Target Slot

channel.

Reader: address-courier (instance)
Writer: (setf address-courier) (instance)
Package

aether.

Source

message.lisp.

Target Slot

courier.

Function: address-p (object)
Package

aether.

Source

message.lisp.

Reader: address-secret (instance)
Writer: (setf address-secret) (instance)
Package

aether.

Source

message.lisp.

Target Slot

secret.

Reader: broadcast-frame-aborting? (instance)
Writer: (setf broadcast-frame-aborting?) (instance)
Package

aether.

Source

cast.lisp.

Target Slot

aborting?.

Reader: broadcast-frame-handle-rts? (instance)
Writer: (setf broadcast-frame-handle-rts?) (instance)
Package

aether.

Source

cast.lisp.

Target Slot

handle-rts?.

Reader: broadcast-frame-message (instance)
Writer: (setf broadcast-frame-message) (instance)
Package

aether.

Source

cast.lisp.

Target Slot

message.

Function: broadcast-frame-p (object)
Package

aether.

Source

cast.lisp.

Reader: broadcast-frame-targets (instance)
Writer: (setf broadcast-frame-targets) (instance)
Package

aether.

Source

cast.lisp.

Target Slot

targets.

Function: check-key-secret (address)

Asserts that the SECRET stored in ADDRESS matches that recorded by the attendant COURIER.

Package

aether.

Source

courier.lisp.

Function: convergecast-frame-aborting? (instance)
Package

aether.

Source

cast.lisp.

Function: (setf convergecast-frame-aborting?) (instance)
Package

aether.

Source

cast.lisp.

Reader: convergecast-frame-func (instance)
Writer: (setf convergecast-frame-func) (instance)
Package

aether.

Source

cast.lisp.

Target Slot

func.

Function: convergecast-frame-handle-rts? (instance)
Package

aether.

Source

cast.lisp.

Function: (setf convergecast-frame-handle-rts?) (instance)
Package

aether.

Source

cast.lisp.

Reader: convergecast-frame-input (instance)
Writer: (setf convergecast-frame-input) (instance)
Package

aether.

Source

cast.lisp.

Target Slot

input.

Function: convergecast-frame-message (instance)
Package

aether.

Source

cast.lisp.

Function: (setf convergecast-frame-message) (instance)
Package

aether.

Source

cast.lisp.

Function: convergecast-frame-p (object)
Package

aether.

Source

cast.lisp.

Function: convergecast-frame-targets (instance)
Package

aether.

Source

cast.lisp.

Function: (setf convergecast-frame-targets) (instance)
Package

aether.

Source

cast.lisp.

Function: copy-address (instance)
Package

aether.

Source

message.lisp.

Function: copy-broadcast-frame (instance)
Package

aether.

Source

cast.lisp.

Function: copy-convergecast-frame (instance)
Package

aether.

Source

cast.lisp.

Function: copy-courier (instance)
Package

aether.

Source

courier.lisp.

Function: copy-courier-gridded (instance)
Package

aether.

Source

network.lisp.

Function: copy-event (instance)
Package

aether.

Source

event.lisp.

Function: copy-grid-neighbors (instance)
Package

aether.

Source

network.lisp.

Function: copy-logger (instance)
Package

aether.

Source

logger.lisp.

Function: copy-message (instance)
Package

aether.

Source

message.lisp.

Function: copy-message-lock (instance)
Package

aether.

Source

lock.lisp.

Function: copy-message-rpc-done (instance)
Package

aether.

Source

message.lisp.

Function: copy-message-rts (instance)
Package

aether.

Source

message.lisp.

Function: copy-message-unlock (instance)
Package

aether.

Source

lock.lisp.

Function: copy-simulation (instance)
Package

aether.

Source

event.lisp.

Function: copy-tracer (instance)
Package

aether.

Source

trace.lisp.

Reader: courier-default-routing-time-step (instance)
Writer: (setf courier-default-routing-time-step) (instance)
Package

aether.

Source

courier.lisp.

Target Slot

default-routing-time-step.

Function: courier-gridded-default-routing-time-step (instance)
Package

aether.

Source

network.lisp.

Function: (setf courier-gridded-default-routing-time-step) (instance)
Package

aether.

Source

network.lisp.

Function: courier-gridded-id (instance)
Package

aether.

Source

network.lisp.

Function: (setf courier-gridded-id) (instance)
Package

aether.

Source

network.lisp.

Function: courier-gridded-inboxes (instance)
Package

aether.

Source

network.lisp.

Function: (setf courier-gridded-inboxes) (instance)
Package

aether.

Source

network.lisp.

Function: courier-gridded-neighbors (instance)
Package

aether.

Source

network.lisp.

Function: (setf courier-gridded-neighbors) (instance)
Package

aether.

Source

network.lisp.

Function: courier-gridded-p (object)
Package

aether.

Source

network.lisp.

Function: courier-gridded-processing-clock-rate (instance)
Package

aether.

Source

network.lisp.

Function: (setf courier-gridded-processing-clock-rate) (instance)
Package

aether.

Source

network.lisp.

Function: courier-gridded-queue (instance)
Package

aether.

Source

network.lisp.

Function: (setf courier-gridded-queue) (instance)
Package

aether.

Source

network.lisp.

Function: courier-gridded-secrets (instance)
Package

aether.

Source

network.lisp.

Function: (setf courier-gridded-secrets) (instance)
Package

aether.

Source

network.lisp.

Reader: courier-id (instance)
Writer: (setf courier-id) (instance)
Package

aether.

Source

courier.lisp.

Target Slot

id.

Reader: courier-inboxes (instance)
Writer: (setf courier-inboxes) (instance)
Package

aether.

Source

courier.lisp.

Target Slot

inboxes.

Reader: courier-neighbors (instance)
Writer: (setf courier-neighbors) (instance)
Package

aether.

Source

courier.lisp.

Target Slot

neighbors.

Function: courier-p (object)
Package

aether.

Source

courier.lisp.

Reader: courier-queue (instance)
Writer: (setf courier-queue) (instance)
Package

aether.

Source

courier.lisp.

Target Slot

queue.

Reader: courier-secrets (instance)
Writer: (setf courier-secrets) (instance)
Package

aether.

Source

courier.lisp.

Target Slot

secrets.

Function: deliver-message (processing-courier message)

Used to simulate the transmission of a message to the next COURIER.

Package

aether.

Source

courier.lisp.

Reader: event-callback (instance)
Package

aether.

Source

event.lisp.

Target Slot

callback.

Function: event-p (object)
Package

aether.

Source

event.lisp.

Reader: event-time (instance)
Package

aether.

Source

event.lisp.

Target Slot

time.

Function: get-channel-index ()
Package

aether.

Source

courier.lisp.

Function: get-courier-index ()
Package

aether.

Source

courier.lisp.

Function: get-message-index ()
Package

aether.

Source

message.lisp.

Function: get-secret-index ()
Package

aether.

Source

courier.lisp.

Reader: grid-neighbors-down (instance)
Writer: (setf grid-neighbors-down) (instance)
Package

aether.

Source

network.lisp.

Target Slot

down.

Reader: grid-neighbors-left (instance)
Writer: (setf grid-neighbors-left) (instance)
Package

aether.

Source

network.lisp.

Target Slot

left.

Function: grid-neighbors-p (object)
Package

aether.

Source

network.lisp.

Reader: grid-neighbors-right (instance)
Writer: (setf grid-neighbors-right) (instance)
Package

aether.

Source

network.lisp.

Target Slot

right.

Reader: grid-neighbors-up (instance)
Writer: (setf grid-neighbors-up) (instance)
Package

aether.

Source

network.lisp.

Target Slot

up.

Function: logger-p (object)
Package

aether.

Source

logger.lisp.

Function: macro-lambda-list-places (lambda-list)

Collect the places that a macro lambda-list might bind.

Package

aether.

Source

utilities.lisp.

Function: make-address (&key courier channel secret)
Package

aether.

Source

message.lisp.

Function: make-courier-gridded (&rest initargs)
Package

aether.

Source

network.lisp.

Function: make-grid-neighbors (&key left right up down)
Package

aether.

Source

network.lisp.

Function: make-logger (&key entries)
Package

aether.

Source

logger.lisp.

Function: make-tracer (&key traces)
Package

aether.

Source

trace.lisp.

Function: message-lock-message-id (instance)
Package

aether.

Source

lock.lisp.

Function: (setf message-lock-message-id) (instance)
Package

aether.

Source

lock.lisp.

Function: message-lock-p (object)
Package

aether.

Source

lock.lisp.

Function: message-lock-reply-channel (instance)
Package

aether.

Source

lock.lisp.

Function: (setf message-lock-reply-channel) (instance)
Package

aether.

Source

lock.lisp.

Function: message-log (logger)

Given a ‘LOGGER’, filter it so that it only contains ‘SEND-MESSAGE’ entries. Re-sends are not included.

Package

aether.

Source

logger.lisp.

Reader: message-message-id (instance)
Writer: (setf message-message-id) (instance)
Package

aether.

Source

message.lisp.

Target Slot

message-id.

Function: message-p (object)
Package

aether.

Source

message.lisp.

Function: message-report (message-log)

Given a ‘MESSAGE-LOG’, which is a LIST of log entries filtered such that they only contain message-related logs, build an ALIST of the different types of sent messages it contains, and a count for each.

Package

aether.

Source

logger.lisp.

Function: message-rpc-done-message-id (instance)
Package

aether.

Source

message.lisp.

Function: (setf message-rpc-done-message-id) (instance)
Package

aether.

Source

message.lisp.

Function: message-rpc-done-p (object)
Package

aether.

Source

message.lisp.

Function: message-rpc-done-reply-channel (instance)
Package

aether.

Source

message.lisp.

Function: (setf message-rpc-done-reply-channel) (instance)
Package

aether.

Source

message.lisp.

Function: message-rts-message-id (instance)
Package

aether.

Source

message.lisp.

Function: (setf message-rts-message-id) (instance)
Package

aether.

Source

message.lisp.

Function: message-rts-p (object)
Package

aether.

Source

message.lisp.

Function: message-rts-reply-channel (instance)
Package

aether.

Source

message.lisp.

Function: (setf message-rts-reply-channel) (instance)
Package

aether.

Source

message.lisp.

Function: message-unlock-message-id (instance)
Package

aether.

Source

lock.lisp.

Function: (setf message-unlock-message-id) (instance)
Package

aether.

Source

lock.lisp.

Function: message-unlock-p (object)
Package

aether.

Source

lock.lisp.

Function: message-unlock-reply-channel (instance)
Package

aether.

Source

lock.lisp.

Function: (setf message-unlock-reply-channel) (instance)
Package

aether.

Source

lock.lisp.

Reader: message-unlock-result (instance)
Writer: (setf message-unlock-result) (instance)
Package

aether.

Source

lock.lisp.

Target Slot

result.

Function: print-trace-table (table &optional stream)

Prints TABLE, an ALIST associating code distances to TRACER objects, to STREAM.

Package

aether.

Source

trace.lisp.

Function: print-traces (&optional stream)

Dump the contents of *MESSAGE-TRACES* to STREAM.

Package

aether.

Source

trace.lisp.

Function: public-address (address)

Extracts the public (i.e., secret-free) address from a potentially private (i.e., secret-ful) address.

Package

aether.

Source

message.lisp.

Function: record-reference (process)

If appropriate, creates a debug record that PROCESS owns its public address.

Package

aether.

Source

dereference.lisp.

Function: reduce+ (input replies)

Sum the ‘INPUT’ and all the ‘REPLIES’.

Package

aether.

Source

cast.lisp.

Function: reduce-max (input replies)

Find the ‘MAX’ of the ‘INPUT’ and all the ‘REPLIES’.

Package

aether.

Source

cast.lisp.

Function: rotate-trace-table (table)

Takes TABLE, an ALIST associating code distances to TRACER objects, and produces a TRACER-type nested ALIST whose innermost nesting is an ALIST associating code distances to triples (AVERAGE MAX COUNT).

Package

aether.

Source

trace.lisp.

Reader: simulation-contents (instance)
Writer: (setf simulation-contents) (instance)
Package

aether.

Source

event.lisp.

Target Slot

contents.

Function: simulation-dequeue (simulation)

Removes the next EVENT from SIMULATION and returns it.

Package

aether.

Source

event.lisp.

Reader: simulation-horizon (instance)
Writer: (setf simulation-horizon) (instance)
Package

aether.

Source

event.lisp.

Target Slot

horizon.

Function: simulation-p (object)
Package

aether.

Source

event.lisp.

Function: simulation-peep (simulation)

Reveals the next EVENT that SIMULATION will return upon DEQUEUE.

Package

aether.

Source

event.lisp.

Function: sort-traces ()

Sort the contents of a TRACER object. Useful for printing.

Package

aether.

Source

trace.lisp.

Function: stash-local-message (message)

Attempts to store ‘MESSAGE’ into a mailbox at ‘*LOCAL-COURIER*’. Returns NIL if ‘MESSAGE’ is not bound for ‘*LOCAL-COURIER*’, T otherwise.

Package

aether.

Source

courier.lisp.

Function: tracer-p (object)
Package

aether.

Source

trace.lisp.

Function: tracer-store (&rest initargs)

Add an entry to the set of traces.

Package

aether.

Source

trace.lisp.

Reader: tracer-traces (instance)
Writer: (setf tracer-traces) (instance)
Package

aether.

Source

trace.lisp.

Target Slot

traces.


6.2.4 Generic functions

Generic Function: courier-courier->route (processing-courier destination-address)

Calculates the next step from ‘PROCESSING-COURIER’ to ‘DESTINATION-ADDRESS’. Returns as an optional second value the time delay between transmission at ‘PROCESSING-COURIER’ to receipt by the next hop.

Package

aether.

Source

courier.lisp.

Methods
Method: courier-courier->route ((processing-courier courier-gridded) destination-courier-id)
Source

network.lisp.

Method: courier-courier->route ((processing-courier courier) destination-address)
Generic Function: handle-message-rts (process message now)
Package

aether.

Methods
Method: handle-message-rts ((process process) (message message-rts) now)

Default handler for when a ‘PROCESS’ receives a ‘MESSAGE-RTS’. Throws an error.

Source

process.lisp.

Generic Function: handle-object (object now)

Describes the generic behavior of OBJECTs of a particular type, as occuring at a particular TIME.

Package

aether.

Source

event.lisp.

Methods
Method: handle-object ((process process) time)
Source

process.lisp.

Method: handle-object ((courier courier) now)
Source

courier.lisp.

Generic Function: message-dispatch (node now)

Use DEFINE-MESSAGE-DISPATCH to install methods here.

Package

aether.

Source

process.lisp.

Methods
Method: message-dispatch ((node0 process-message-emissary) now2)
Source

emissary.lisp.

Generic Function: print-log-entry (entry source-type entry-type &optional stream)

Pretty-prints a log entry to STREAM.

Package

aether.

Source

logger.lisp.

Methods
Method: print-log-entry (entry source-type (entry-type (eql aether:send-message)) &optional stream)
Method: print-log-entry (entry source-type entry-type &optional stream)
Generic Reader: process-courier (object)
Generic Writer: (setf process-courier) (object)
Package

aether.

Methods
Reader Method: process-courier ((process process))
Writer Method: (setf process-courier) ((process process))

Holds a reference to the ‘COURIER’ which services this ‘PROCESS’.

Source

process.lisp.

Target Slot

process-courier.

Generic Reader: process-key (object)
Generic Writer: (setf process-key) (object)
Package

aether.

Methods
Reader Method: process-key ((process process))
Writer Method: (setf process-key) ((process process))

Holds the ‘PROCESS’s ‘ADDRESS’ on which it receives messages. (Use ‘PROCESS-PUBLIC-ADDRESS’ to extract an ‘ADDRESS’ to be used to send messages to this ‘PROCESS’.)

Source

process.lisp.

Target Slot

process-key.

Generic Function: process-upkeep (server now command command-args)

If a PROCESS has no pending requests to service, it may want to perform some computation of its own, which happens in this routine. Such computations typically include sending messages and listening on private channels for responses.

Package

aether.

Source

process.lisp.

Methods
Method: process-upkeep ((process process) now (command-place0 (eql aether::convergecast)) argument-list1)

Pops a frame off of the ‘PROCESS’s data stack, and after checking that it is in fact a ‘CONVERGECAST-FRAME’, unpacks ‘ABORTING?’, ‘FUNC’, ‘INPUT’, ‘MESSAGE’, and ‘TARGETS’ from the frame. Unless ‘ABORTING?’ is T, forwards along a copy of ‘MESSAGE’ to all ‘TARGETS’ and awaits replies. While awaiting replies, we handle RTSes gracefully if ‘HANDLE-RTS?’ is T. Then, calculates a value to return by feeding the ‘INPUT’ and all ‘REPLIES’ to ‘FUNC’ as (FUNCALL FUNC INPUT REPLIES). Finally, sends the computed result back to ‘REPLY-CHANNEL’ if it is not null.

Source

cast.lisp.

Method: process-upkeep ((process process) now (command-place0 (eql aether::broadcast)) argument-list1)

Pops a frame off of the ‘PROCESS’s data stack, and after checking that it is in fact a ‘BROADCAST-FRAME’, unpacks ‘ABORTING?’, ‘HANDLE-RTS?’, ‘MESSAGE’ and ‘TARGETS’ from the frame. Unless ‘ABORTING?’ is T, forwards along a copy of ‘MESSAGE’ to all ‘TARGETS’ and optionally awaits a reply and sends back an acknowledgement back to the ‘MESSAGE’s ‘REPLY-CHANNEL’ if the reply channel is not null. While awaiting replies, we handle RTSes gracefully if ‘HANDLE-RTS?’ is T.

Source

cast.lisp.

Method: process-upkeep ((process process-lockable) now (command-place0 (eql aether::%finish-unlock)) argument-list1)

Cleans up after START-LOCK.

Source

lock.lisp.

Method: process-upkeep ((process process-lockable) now (command-place0 (eql aether:broadcast-unlock)) argument-list1)

Cleans up after BROADCAST-LOCK.

Source

lock.lisp.

Method: process-upkeep ((process process-lockable) now (command-place0 (eql aether::%wait-for-unlock)) argument-list1)

Waits for a release signal to arrive via ‘UPWARD-RX-LATCH’.

Source

lock.lisp.

Method: process-upkeep ((process process-lockable) now (command-place0 (eql aether:broadcast-lock)) argument-list1)

Establishes locks on ‘TARGETS’.

Source

lock.lisp.

Method: process-upkeep ((process process-lockable) now (command-place0 (eql aether:start-lock)) argument-list1)

Locks ‘PROCESS’. ‘REPLY-CHANNEL’ indicates the address (if any) on which to signal whether the lock was / was not established.

Source

lock.lisp.

Method: process-upkeep (process now (command-place0 (eql aether::repeat-until)) argument-list1)

Repeatedly calls CALLBACK: (TIME) –> (VALUES EVENTS DONE?) until DONE? is non-NIL. Then, calls FINALIZE: (TIME) –> (EVENTS) once.

Source

dpu-helpers.lisp.

Method: process-upkeep (server now command command-args)

6.2.5 Structures

Structure: courier-gridded

A ‘COURIER’ instance networked to other couriers in a grid.

NOTE: Expects ‘ID’ to be a list and ‘NEIGHBORS’ to be a ‘GRID-NEIGHBORS’.

Package

aether.

Source

network.lisp.

Direct superclasses

courier.

Direct methods

courier-courier->route.

Structure: grid-neighbors

A structure for storing the neighbors of a courier participating in a grid.

Package

aether.

Source

network.lisp.

Direct superclasses

structure-object.

Direct slots
Slot: left
Readers

grid-neighbors-left.

Writers

(setf grid-neighbors-left).

Slot: right
Readers

grid-neighbors-right.

Writers

(setf grid-neighbors-right).

Slot: up
Readers

grid-neighbors-up.

Writers

(setf grid-neighbors-up).

Slot: down
Readers

grid-neighbors-down.

Writers

(setf grid-neighbors-down).

Structure: logger
Package

aether.

Source

logger.lisp.

Direct superclasses

structure-object.

Direct slots
Slot: entries
Type

list

Readers

logger-entries.

Writers

(setf logger-entries).

Structure: message-unlock

Sent to release a lock.

Package

aether.

Source

lock.lisp.

Direct superclasses

message.

Direct slots
Slot: result
Readers

message-unlock-result.

Writers

(setf message-unlock-result).

Structure: tracer

Collects trace information.

TRACES: ORIGIN-TYPE –ALIST-> MESSAGE-TYPE –ALIST-> D-COUNT –ALIST-> DELTAs.

Package

aether.

Source

trace.lisp.

Direct superclasses

structure-object.

Direct slots
Slot: traces
Readers

tracer-traces.

Writers

(setf tracer-traces).


6.2.6 Classes

Class: process-message-emissary

Dummy PROCESS used to host nonblocking message handlers.

Package

aether.

Source

emissary.lisp.

Direct superclasses

process.

Direct methods

message-dispatch.


Appendix A Indexes


A.1 Concepts


A.2 Functions

Jump to:   %   (  
A   B   C   D   E   F   G   H   I   L   M   P   Q   R   S   T   U   W  
Index Entry  Section

%
%dpu-flet-definitions: Private ordinary functions
%dpu-macrolet-definitions: Private ordinary functions
%install-repeat-until: Private macros
%make-courier-gridded: Private ordinary functions
%make-simulation: Private ordinary functions

(
(setf address-channel): Private ordinary functions
(setf address-courier): Private ordinary functions
(setf address-secret): Private ordinary functions
(setf broadcast-frame-aborting?): Private ordinary functions
(setf broadcast-frame-handle-rts?): Private ordinary functions
(setf broadcast-frame-message): Private ordinary functions
(setf broadcast-frame-targets): Private ordinary functions
(setf convergecast-frame-aborting?): Private ordinary functions
(setf convergecast-frame-func): Private ordinary functions
(setf convergecast-frame-handle-rts?): Private ordinary functions
(setf convergecast-frame-input): Private ordinary functions
(setf convergecast-frame-message): Private ordinary functions
(setf convergecast-frame-targets): Private ordinary functions
(setf courier-default-routing-time-step): Private ordinary functions
(setf courier-gridded-default-routing-time-step): Private ordinary functions
(setf courier-gridded-id): Private ordinary functions
(setf courier-gridded-inboxes): Private ordinary functions
(setf courier-gridded-neighbors): Private ordinary functions
(setf courier-gridded-processing-clock-rate): Private ordinary functions
(setf courier-gridded-queue): Private ordinary functions
(setf courier-gridded-secrets): Private ordinary functions
(setf courier-id): Private ordinary functions
(setf courier-inboxes): Private ordinary functions
(setf courier-neighbors): Private ordinary functions
(setf courier-processing-clock-rate): Public ordinary functions
(setf courier-queue): Private ordinary functions
(setf courier-secrets): Private ordinary functions
(setf grid-neighbors-down): Private ordinary functions
(setf grid-neighbors-left): Private ordinary functions
(setf grid-neighbors-right): Private ordinary functions
(setf grid-neighbors-up): Private ordinary functions
(setf logger-entries): Public ordinary functions
(setf message-lock-message-id): Private ordinary functions
(setf message-lock-reply-channel): Private ordinary functions
(setf message-message-id): Private ordinary functions
(setf message-reply-channel): Public ordinary functions
(setf message-rpc-done-message-id): Private ordinary functions
(setf message-rpc-done-reply-channel): Private ordinary functions
(setf message-rpc-done-result): Public ordinary functions
(setf message-rts-message-id): Private ordinary functions
(setf message-rts-reply-channel): Private ordinary functions
(setf message-unlock-message-id): Private ordinary functions
(setf message-unlock-reply-channel): Private ordinary functions
(setf message-unlock-result): Private ordinary functions
(setf process-clock-rate): Public generic functions
(setf process-clock-rate): Public generic functions
(setf process-command-stack): Public generic functions
(setf process-command-stack): Public generic functions
(setf process-courier): Private generic functions
(setf process-courier): Private generic functions
(setf process-data-stack): Public generic functions
(setf process-data-stack): Public generic functions
(setf process-debug?): Public generic functions
(setf process-debug?): Public generic functions
(setf process-exhaust-inbox?): Public generic functions
(setf process-exhaust-inbox?): Public generic functions
(setf process-key): Private generic functions
(setf process-key): Private generic functions
(setf process-lockable-aborting?): Public generic functions
(setf process-lockable-aborting?): Public generic functions
(setf process-lockable-done-signal): Public generic functions
(setf process-lockable-done-signal): Public generic functions
(setf process-lockable-locked?): Public generic functions
(setf process-lockable-locked?): Public generic functions
(setf process-peruse-inbox?): Public generic functions
(setf process-peruse-inbox?): Public generic functions
(setf simulation-contents): Private ordinary functions
(setf simulation-horizon): Private ordinary functions
(setf tracer-traces): Private ordinary functions

A
address-channel: Private ordinary functions
address-courier: Private ordinary functions
address-p: Private ordinary functions
address-secret: Private ordinary functions
address=: Public ordinary functions
assoc-default: Private macros

B
broadcast-frame-aborting?: Private ordinary functions
broadcast-frame-handle-rts?: Private ordinary functions
broadcast-frame-message: Private ordinary functions
broadcast-frame-p: Private ordinary functions
broadcast-frame-targets: Private ordinary functions

C
canary-all: Public ordinary functions
canary-any: Public ordinary functions
canary-process: Public ordinary functions
canary-timeout: Public ordinary functions
canary-until: Public ordinary functions
cheap-heap-dequeue: Public ordinary functions
cheap-heap-enqueue: Public ordinary functions
cheap-heap-peep: Public ordinary functions
check-key-secret: Private ordinary functions
convergecast-frame-aborting?: Private ordinary functions
convergecast-frame-func: Private ordinary functions
convergecast-frame-handle-rts?: Private ordinary functions
convergecast-frame-input: Private ordinary functions
convergecast-frame-message: Private ordinary functions
convergecast-frame-p: Private ordinary functions
convergecast-frame-targets: Private ordinary functions
copy-address: Private ordinary functions
copy-broadcast-frame: Private ordinary functions
copy-convergecast-frame: Private ordinary functions
copy-courier: Private ordinary functions
copy-courier-gridded: Private ordinary functions
copy-event: Private ordinary functions
copy-grid-neighbors: Private ordinary functions
copy-logger: Private ordinary functions
copy-message: Private ordinary functions
copy-message-lock: Private ordinary functions
copy-message-rpc-done: Private ordinary functions
copy-message-rts: Private ordinary functions
copy-message-unlock: Private ordinary functions
copy-simulation: Private ordinary functions
copy-tracer: Private ordinary functions
courier-courier->route: Private generic functions
courier-courier->route: Private generic functions
courier-courier->route: Private generic functions
courier-default-routing-time-step: Private ordinary functions
courier-gridded-default-routing-time-step: Private ordinary functions
courier-gridded-id: Private ordinary functions
courier-gridded-inboxes: Private ordinary functions
courier-gridded-neighbors: Private ordinary functions
courier-gridded-p: Private ordinary functions
courier-gridded-processing-clock-rate: Private ordinary functions
courier-gridded-queue: Private ordinary functions
courier-gridded-secrets: Private ordinary functions
courier-id: Private ordinary functions
courier-inboxes: Private ordinary functions
courier-neighbors: Private ordinary functions
courier-p: Private ordinary functions
courier-processing-clock-rate: Public ordinary functions
courier-queue: Private ordinary functions
courier-secrets: Private ordinary functions

D
define-broadcast-handler: Public macros
define-convergecast-handler: Public macros
define-dpu-flet: Private macros
define-dpu-macro: Private macros
define-global-counter: Private macros
define-message-dispatch: Public macros
define-message-handler: Public macros
define-message-subordinate: Public macros
define-object-handler: Public macros
define-process-upkeep: Public macros
define-rpc-handler: Public macros
deliver-message: Private ordinary functions
dereference: Public ordinary functions
destructuring-places: Public macros
dohash: Public macros

E
event-callback: Private ordinary functions
event-p: Private ordinary functions
event-time: Private ordinary functions

F
finish-with-futures: Public ordinary functions
finish-with-scheduling: Public ordinary functions
Function, %dpu-flet-definitions: Private ordinary functions
Function, %dpu-macrolet-definitions: Private ordinary functions
Function, %make-courier-gridded: Private ordinary functions
Function, %make-simulation: Private ordinary functions
Function, (setf address-channel): Private ordinary functions
Function, (setf address-courier): Private ordinary functions
Function, (setf address-secret): Private ordinary functions
Function, (setf broadcast-frame-aborting?): Private ordinary functions
Function, (setf broadcast-frame-handle-rts?): Private ordinary functions
Function, (setf broadcast-frame-message): Private ordinary functions
Function, (setf broadcast-frame-targets): Private ordinary functions
Function, (setf convergecast-frame-aborting?): Private ordinary functions
Function, (setf convergecast-frame-func): Private ordinary functions
Function, (setf convergecast-frame-handle-rts?): Private ordinary functions
Function, (setf convergecast-frame-input): Private ordinary functions
Function, (setf convergecast-frame-message): Private ordinary functions
Function, (setf convergecast-frame-targets): Private ordinary functions
Function, (setf courier-default-routing-time-step): Private ordinary functions
Function, (setf courier-gridded-default-routing-time-step): Private ordinary functions
Function, (setf courier-gridded-id): Private ordinary functions
Function, (setf courier-gridded-inboxes): Private ordinary functions
Function, (setf courier-gridded-neighbors): Private ordinary functions
Function, (setf courier-gridded-processing-clock-rate): Private ordinary functions
Function, (setf courier-gridded-queue): Private ordinary functions
Function, (setf courier-gridded-secrets): Private ordinary functions
Function, (setf courier-id): Private ordinary functions
Function, (setf courier-inboxes): Private ordinary functions
Function, (setf courier-neighbors): Private ordinary functions
Function, (setf courier-processing-clock-rate): Public ordinary functions
Function, (setf courier-queue): Private ordinary functions
Function, (setf courier-secrets): Private ordinary functions
Function, (setf grid-neighbors-down): Private ordinary functions
Function, (setf grid-neighbors-left): Private ordinary functions
Function, (setf grid-neighbors-right): Private ordinary functions
Function, (setf grid-neighbors-up): Private ordinary functions
Function, (setf logger-entries): Public ordinary functions
Function, (setf message-lock-message-id): Private ordinary functions
Function, (setf message-lock-reply-channel): Private ordinary functions
Function, (setf message-message-id): Private ordinary functions
Function, (setf message-reply-channel): Public ordinary functions
Function, (setf message-rpc-done-message-id): Private ordinary functions
Function, (setf message-rpc-done-reply-channel): Private ordinary functions
Function, (setf message-rpc-done-result): Public ordinary functions
Function, (setf message-rts-message-id): Private ordinary functions
Function, (setf message-rts-reply-channel): Private ordinary functions
Function, (setf message-unlock-message-id): Private ordinary functions
Function, (setf message-unlock-reply-channel): Private ordinary functions
Function, (setf message-unlock-result): Private ordinary functions
Function, (setf simulation-contents): Private ordinary functions
Function, (setf simulation-horizon): Private ordinary functions
Function, (setf tracer-traces): Private ordinary functions
Function, address-channel: Private ordinary functions
Function, address-courier: Private ordinary functions
Function, address-p: Private ordinary functions
Function, address-secret: Private ordinary functions
Function, address=: Public ordinary functions
Function, broadcast-frame-aborting?: Private ordinary functions
Function, broadcast-frame-handle-rts?: Private ordinary functions
Function, broadcast-frame-message: Private ordinary functions
Function, broadcast-frame-p: Private ordinary functions
Function, broadcast-frame-targets: Private ordinary functions
Function, canary-all: Public ordinary functions
Function, canary-any: Public ordinary functions
Function, canary-process: Public ordinary functions
Function, canary-timeout: Public ordinary functions
Function, canary-until: Public ordinary functions
Function, cheap-heap-dequeue: Public ordinary functions
Function, cheap-heap-enqueue: Public ordinary functions
Function, cheap-heap-peep: Public ordinary functions
Function, check-key-secret: Private ordinary functions
Function, convergecast-frame-aborting?: Private ordinary functions
Function, convergecast-frame-func: Private ordinary functions
Function, convergecast-frame-handle-rts?: Private ordinary functions
Function, convergecast-frame-input: Private ordinary functions
Function, convergecast-frame-message: Private ordinary functions
Function, convergecast-frame-p: Private ordinary functions
Function, convergecast-frame-targets: Private ordinary functions
Function, copy-address: Private ordinary functions
Function, copy-broadcast-frame: Private ordinary functions
Function, copy-convergecast-frame: Private ordinary functions
Function, copy-courier: Private ordinary functions
Function, copy-courier-gridded: Private ordinary functions
Function, copy-event: Private ordinary functions
Function, copy-grid-neighbors: Private ordinary functions
Function, copy-logger: Private ordinary functions
Function, copy-message: Private ordinary functions
Function, copy-message-lock: Private ordinary functions
Function, copy-message-rpc-done: Private ordinary functions
Function, copy-message-rts: Private ordinary functions
Function, copy-message-unlock: Private ordinary functions
Function, copy-simulation: Private ordinary functions
Function, copy-tracer: Private ordinary functions
Function, courier-default-routing-time-step: Private ordinary functions
Function, courier-gridded-default-routing-time-step: Private ordinary functions
Function, courier-gridded-id: Private ordinary functions
Function, courier-gridded-inboxes: Private ordinary functions
Function, courier-gridded-neighbors: Private ordinary functions
Function, courier-gridded-p: Private ordinary functions
Function, courier-gridded-processing-clock-rate: Private ordinary functions
Function, courier-gridded-queue: Private ordinary functions
Function, courier-gridded-secrets: Private ordinary functions
Function, courier-id: Private ordinary functions
Function, courier-inboxes: Private ordinary functions
Function, courier-neighbors: Private ordinary functions
Function, courier-p: Private ordinary functions
Function, courier-processing-clock-rate: Public ordinary functions
Function, courier-queue: Private ordinary functions
Function, courier-secrets: Private ordinary functions
Function, deliver-message: Private ordinary functions
Function, dereference: Public ordinary functions
Function, event-callback: Private ordinary functions
Function, event-p: Private ordinary functions
Function, event-time: Private ordinary functions
Function, finish-with-futures: Public ordinary functions
Function, finish-with-scheduling: Public ordinary functions
Function, future: Public ordinary functions
Function, future*: Public ordinary functions
Function, get-channel-index: Private ordinary functions
Function, get-courier-index: Private ordinary functions
Function, get-message-index: Private ordinary functions
Function, get-secret-index: Private ordinary functions
Function, grid-neighbors-down: Private ordinary functions
Function, grid-neighbors-left: Private ordinary functions
Function, grid-neighbors-p: Private ordinary functions
Function, grid-neighbors-right: Private ordinary functions
Function, grid-neighbors-up: Private ordinary functions
Function, hash-address: Public ordinary functions
Function, log-entry: Public ordinary functions
Function, logger-entries: Public ordinary functions
Function, logger-p: Private ordinary functions
Function, macro-lambda-list-places: Private ordinary functions
Function, make-address: Private ordinary functions
Function, make-broadcast-frame: Public ordinary functions
Function, make-cheap-heap: Public ordinary functions
Function, make-convergecast-frame: Public ordinary functions
Function, make-courier: Public ordinary functions
Function, make-courier-grid: Public ordinary functions
Function, make-courier-gridded: Private ordinary functions
Function, make-event: Public ordinary functions
Function, make-grid-neighbors: Private ordinary functions
Function, make-logger: Private ordinary functions
Function, make-message: Public ordinary functions
Function, make-message-lock: Public ordinary functions
Function, make-message-rpc-done: Public ordinary functions
Function, make-message-rts: Public ordinary functions
Function, make-message-unlock: Public ordinary functions
Function, make-q: Public ordinary functions
Function, make-simulation: Public ordinary functions
Function, make-tracer: Private ordinary functions
Function, message-lock-message-id: Private ordinary functions
Function, message-lock-p: Private ordinary functions
Function, message-lock-reply-channel: Private ordinary functions
Function, message-log: Private ordinary functions
Function, message-message-id: Private ordinary functions
Function, message-p: Private ordinary functions
Function, message-reply-channel: Public ordinary functions
Function, message-report: Private ordinary functions
Function, message-rpc-done-message-id: Private ordinary functions
Function, message-rpc-done-p: Private ordinary functions
Function, message-rpc-done-reply-channel: Private ordinary functions
Function, message-rpc-done-result: Public ordinary functions
Function, message-rts-message-id: Private ordinary functions
Function, message-rts-p: Private ordinary functions
Function, message-rts-reply-channel: Private ordinary functions
Function, message-unlock-message-id: Private ordinary functions
Function, message-unlock-p: Private ordinary functions
Function, message-unlock-reply-channel: Private ordinary functions
Function, message-unlock-result: Private ordinary functions
Function, peek: Public ordinary functions
Function, print-log: Public ordinary functions
Function, print-message-report: Public ordinary functions
Function, print-trace-table: Private ordinary functions
Function, print-traces: Private ordinary functions
Function, process-continuation: Public ordinary functions
Function, process-die: Public ordinary functions
Function, process-public-address: Public ordinary functions
Function, public-address: Private ordinary functions
Function, push-broadcast-frame: Public ordinary functions
Function, push-convergecast-frame: Public ordinary functions
Function, q-deq: Public ordinary functions
Function, q-deq-first: Public ordinary functions
Function, q-deq-when: Public ordinary functions
Function, q-empty: Public ordinary functions
Function, q-enq: Public ordinary functions
Function, q-len: Public ordinary functions
Function, q-peek: Public ordinary functions
Function, q-push: Public ordinary functions
Function, record-reference: Private ordinary functions
Function, reduce+: Private ordinary functions
Function, reduce-max: Private ordinary functions
Function, register: Public ordinary functions
Function, reset-logger: Public ordinary functions
Function, return-from-cast: Public ordinary functions
Function, rotate-trace-table: Private ordinary functions
Function, schedule: Public ordinary functions
Function, schedule*: Public ordinary functions
Function, send-message: Public ordinary functions
Function, send-message-batch: Public ordinary functions
Function, simulation-add-event: Public ordinary functions
Function, simulation-contents: Private ordinary functions
Function, simulation-dequeue: Private ordinary functions
Function, simulation-horizon: Private ordinary functions
Function, simulation-p: Private ordinary functions
Function, simulation-peep: Private ordinary functions
Function, simulation-run: Public ordinary functions
Function, sort-traces: Private ordinary functions
Function, spawn-process: Public ordinary functions
Function, stash-local-message: Private ordinary functions
Function, tracer-p: Private ordinary functions
Function, tracer-store: Private ordinary functions
Function, tracer-traces: Private ordinary functions
Function, unregister: Public ordinary functions
future: Public ordinary functions
future*: Public ordinary functions

G
Generic Function, (setf process-clock-rate): Public generic functions
Generic Function, (setf process-command-stack): Public generic functions
Generic Function, (setf process-courier): Private generic functions
Generic Function, (setf process-data-stack): Public generic functions
Generic Function, (setf process-debug?): Public generic functions
Generic Function, (setf process-exhaust-inbox?): Public generic functions
Generic Function, (setf process-key): Private generic functions
Generic Function, (setf process-lockable-aborting?): Public generic functions
Generic Function, (setf process-lockable-done-signal): Public generic functions
Generic Function, (setf process-lockable-locked?): Public generic functions
Generic Function, (setf process-peruse-inbox?): Public generic functions
Generic Function, courier-courier->route: Private generic functions
Generic Function, handle-message-lock: Public generic functions
Generic Function, handle-message-rts: Private generic functions
Generic Function, handle-object: Private generic functions
Generic Function, message-dispatch: Private generic functions
Generic Function, print-log-entry: Private generic functions
Generic Function, process-clock-rate: Public generic functions
Generic Function, process-command-stack: Public generic functions
Generic Function, process-courier: Private generic functions
Generic Function, process-data-stack: Public generic functions
Generic Function, process-debug?: Public generic functions
Generic Function, process-exhaust-inbox?: Public generic functions
Generic Function, process-key: Private generic functions
Generic Function, process-lockable-aborting?: Public generic functions
Generic Function, process-lockable-done-signal: Public generic functions
Generic Function, process-lockable-locked?: Public generic functions
Generic Function, process-lockable-targets: Public generic functions
Generic Function, process-peruse-inbox?: Public generic functions
Generic Function, process-upkeep: Private generic functions
get-channel-index: Private ordinary functions
get-courier-index: Private ordinary functions
get-message-index: Private ordinary functions
get-secret-index: Private ordinary functions
grid-neighbors-down: Private ordinary functions
grid-neighbors-left: Private ordinary functions
grid-neighbors-p: Private ordinary functions
grid-neighbors-right: Private ordinary functions
grid-neighbors-up: Private ordinary functions

H
handle-message-lock: Public generic functions
handle-message-lock: Public generic functions
handle-message-rts: Private generic functions
handle-message-rts: Private generic functions
handle-object: Private generic functions
handle-object: Private generic functions
handle-object: Private generic functions
hash-address: Public ordinary functions
hash-let: Private macros

I
ignorant-lambda: Public macros
initialize-and-return: Public macros

L
log-entry: Public ordinary functions
logger-entries: Public ordinary functions
logger-p: Private ordinary functions

M
Macro, %install-repeat-until: Private macros
Macro, assoc-default: Private macros
Macro, define-broadcast-handler: Public macros
Macro, define-convergecast-handler: Public macros
Macro, define-dpu-flet: Private macros
Macro, define-dpu-macro: Private macros
Macro, define-global-counter: Private macros
Macro, define-message-dispatch: Public macros
Macro, define-message-handler: Public macros
Macro, define-message-subordinate: Public macros
Macro, define-object-handler: Public macros
Macro, define-process-upkeep: Public macros
Macro, define-rpc-handler: Public macros
Macro, destructuring-places: Public macros
Macro, dohash: Public macros
Macro, hash-let: Private macros
Macro, ignorant-lambda: Public macros
Macro, initialize-and-return: Public macros
Macro, receive-message: Public macros
Macro, sync-receive: Public macros
Macro, sync-rpc: Public macros
Macro, with-address-dereferencing: Public macros
Macro, with-courier: Public macros
Macro, with-futures: Public macros
Macro, with-replies: Public macros
Macro, with-scheduling: Public macros
Macro, with-simulation: Public macros
Macro, with-traces: Private macros
Macro, with-transient-logger: Public macros
macro-lambda-list-places: Private ordinary functions
make-address: Private ordinary functions
make-broadcast-frame: Public ordinary functions
make-cheap-heap: Public ordinary functions
make-convergecast-frame: Public ordinary functions
make-courier: Public ordinary functions
make-courier-grid: Public ordinary functions
make-courier-gridded: Private ordinary functions
make-event: Public ordinary functions
make-grid-neighbors: Private ordinary functions
make-logger: Private ordinary functions
make-message: Public ordinary functions
make-message-lock: Public ordinary functions
make-message-rpc-done: Public ordinary functions
make-message-rts: Public ordinary functions
make-message-unlock: Public ordinary functions
make-q: Public ordinary functions
make-simulation: Public ordinary functions
make-tracer: Private ordinary functions
message-dispatch: Private generic functions
message-dispatch: Private generic functions
message-lock-message-id: Private ordinary functions
message-lock-p: Private ordinary functions
message-lock-reply-channel: Private ordinary functions
message-log: Private ordinary functions
message-message-id: Private ordinary functions
message-p: Private ordinary functions
message-reply-channel: Public ordinary functions
message-report: Private ordinary functions
message-rpc-done-message-id: Private ordinary functions
message-rpc-done-p: Private ordinary functions
message-rpc-done-reply-channel: Private ordinary functions
message-rpc-done-result: Public ordinary functions
message-rts-message-id: Private ordinary functions
message-rts-p: Private ordinary functions
message-rts-reply-channel: Private ordinary functions
message-unlock-message-id: Private ordinary functions
message-unlock-p: Private ordinary functions
message-unlock-reply-channel: Private ordinary functions
message-unlock-result: Private ordinary functions
Method, (setf process-clock-rate): Public generic functions
Method, (setf process-command-stack): Public generic functions
Method, (setf process-courier): Private generic functions
Method, (setf process-data-stack): Public generic functions
Method, (setf process-debug?): Public generic functions
Method, (setf process-exhaust-inbox?): Public generic functions
Method, (setf process-key): Private generic functions
Method, (setf process-lockable-aborting?): Public generic functions
Method, (setf process-lockable-done-signal): Public generic functions
Method, (setf process-lockable-locked?): Public generic functions
Method, (setf process-peruse-inbox?): Public generic functions
Method, courier-courier->route: Private generic functions
Method, courier-courier->route: Private generic functions
Method, handle-message-lock: Public generic functions
Method, handle-message-rts: Private generic functions
Method, handle-object: Private generic functions
Method, handle-object: Private generic functions
Method, message-dispatch: Private generic functions
Method, print-log-entry: Private generic functions
Method, print-log-entry: Private generic functions
Method, print-object: Public standalone methods
Method, print-object: Public standalone methods
Method, print-object: Public standalone methods
Method, process-clock-rate: Public generic functions
Method, process-command-stack: Public generic functions
Method, process-courier: Private generic functions
Method, process-data-stack: Public generic functions
Method, process-debug?: Public generic functions
Method, process-exhaust-inbox?: Public generic functions
Method, process-key: Private generic functions
Method, process-lockable-aborting?: Public generic functions
Method, process-lockable-done-signal: Public generic functions
Method, process-lockable-locked?: Public generic functions
Method, process-peruse-inbox?: Public generic functions
Method, process-upkeep: Private generic functions
Method, process-upkeep: Private generic functions
Method, process-upkeep: Private generic functions
Method, process-upkeep: Private generic functions
Method, process-upkeep: Private generic functions
Method, process-upkeep: Private generic functions
Method, process-upkeep: Private generic functions
Method, process-upkeep: Private generic functions
Method, process-upkeep: Private generic functions

P
peek: Public ordinary functions
print-log: Public ordinary functions
print-log-entry: Private generic functions
print-log-entry: Private generic functions
print-log-entry: Private generic functions
print-message-report: Public ordinary functions
print-object: Public standalone methods
print-object: Public standalone methods
print-object: Public standalone methods
print-trace-table: Private ordinary functions
print-traces: Private ordinary functions
process-clock-rate: Public generic functions
process-clock-rate: Public generic functions
process-command-stack: Public generic functions
process-command-stack: Public generic functions
process-continuation: Public ordinary functions
process-courier: Private generic functions
process-courier: Private generic functions
process-data-stack: Public generic functions
process-data-stack: Public generic functions
process-debug?: Public generic functions
process-debug?: Public generic functions
process-die: Public ordinary functions
process-exhaust-inbox?: Public generic functions
process-exhaust-inbox?: Public generic functions
process-key: Private generic functions
process-key: Private generic functions
process-lockable-aborting?: Public generic functions
process-lockable-aborting?: Public generic functions
process-lockable-done-signal: Public generic functions
process-lockable-done-signal: Public generic functions
process-lockable-locked?: Public generic functions
process-lockable-locked?: Public generic functions
process-lockable-targets: Public generic functions
process-peruse-inbox?: Public generic functions
process-peruse-inbox?: Public generic functions
process-public-address: Public ordinary functions
process-upkeep: Private generic functions
process-upkeep: Private generic functions
process-upkeep: Private generic functions
process-upkeep: Private generic functions
process-upkeep: Private generic functions
process-upkeep: Private generic functions
process-upkeep: Private generic functions
process-upkeep: Private generic functions
process-upkeep: Private generic functions
process-upkeep: Private generic functions
public-address: Private ordinary functions
push-broadcast-frame: Public ordinary functions
push-convergecast-frame: Public ordinary functions

Q
q-deq: Public ordinary functions
q-deq-first: Public ordinary functions
q-deq-when: Public ordinary functions
q-empty: Public ordinary functions
q-enq: Public ordinary functions
q-len: Public ordinary functions
q-peek: Public ordinary functions
q-push: Public ordinary functions

R
receive-message: Public macros
record-reference: Private ordinary functions
reduce+: Private ordinary functions
reduce-max: Private ordinary functions
register: Public ordinary functions
reset-logger: Public ordinary functions
return-from-cast: Public ordinary functions
rotate-trace-table: Private ordinary functions

S
schedule: Public ordinary functions
schedule*: Public ordinary functions
send-message: Public ordinary functions
send-message-batch: Public ordinary functions
simulation-add-event: Public ordinary functions
simulation-contents: Private ordinary functions
simulation-dequeue: Private ordinary functions
simulation-horizon: Private ordinary functions
simulation-p: Private ordinary functions
simulation-peep: Private ordinary functions
simulation-run: Public ordinary functions
sort-traces: Private ordinary functions
spawn-process: Public ordinary functions
stash-local-message: Private ordinary functions
sync-receive: Public macros
sync-rpc: Public macros

T
tracer-p: Private ordinary functions
tracer-store: Private ordinary functions
tracer-traces: Private ordinary functions

U
unregister: Public ordinary functions

W
with-address-dereferencing: Public macros
with-courier: Public macros
with-futures: Public macros
with-replies: Public macros
with-scheduling: Public macros
with-simulation: Public macros
with-traces: Private macros
with-transient-logger: Public macros


A.3 Variables

Jump to:   *  
A   C   D   E   F   H   I   L   M   N   P   Q   R   S   T   U  
Index Entry  Section

*
*courier-processing-clock-rate*: Private special variables
*dereferencing-table*: Private special variables
*local-courier*: Public special variables
*logger*: Public special variables
*message-traces*: Private special variables
*routing-time-step*: Private special variables

A
aborting?: Public structures
aborting?: Public classes

C
callback: Public structures
channel: Public structures
contents: Public structures
courier: Public structures

D
default-routing-time-step: Public structures
done-signal: Public classes
down: Private structures
downward-rx-latches: Public classes
downward-tx-latches: Public classes

E
entries: Private structures

F
func: Public structures

H
handle-rts?: Public structures
horizon: Public structures

I
id: Public structures
inboxes: Public structures
input: Public structures

L
left: Private structures
locked?: Public classes

M
message: Public structures
message-id: Public structures

N
neighbors: Public structures

P
process-clock-rate: Public classes
process-command-stack: Public classes
process-courier: Public classes
process-data-stack: Public classes
process-debug?: Public classes
process-exhaust-inbox?: Public classes
process-key: Public classes
process-peruse-inbox?: Public classes
processing-clock-rate: Public structures

Q
queue: Public structures

R
reply-channel: Public structures
result: Public structures
result: Private structures
right: Private structures

S
secret: Public structures
secrets: Public structures
Slot, aborting?: Public structures
Slot, aborting?: Public classes
Slot, callback: Public structures
Slot, channel: Public structures
Slot, contents: Public structures
Slot, courier: Public structures
Slot, default-routing-time-step: Public structures
Slot, done-signal: Public classes
Slot, down: Private structures
Slot, downward-rx-latches: Public classes
Slot, downward-tx-latches: Public classes
Slot, entries: Private structures
Slot, func: Public structures
Slot, handle-rts?: Public structures
Slot, horizon: Public structures
Slot, id: Public structures
Slot, inboxes: Public structures
Slot, input: Public structures
Slot, left: Private structures
Slot, locked?: Public classes
Slot, message: Public structures
Slot, message-id: Public structures
Slot, neighbors: Public structures
Slot, process-clock-rate: Public classes
Slot, process-command-stack: Public classes
Slot, process-courier: Public classes
Slot, process-data-stack: Public classes
Slot, process-debug?: Public classes
Slot, process-exhaust-inbox?: Public classes
Slot, process-key: Public classes
Slot, process-peruse-inbox?: Public classes
Slot, processing-clock-rate: Public structures
Slot, queue: Public structures
Slot, reply-channel: Public structures
Slot, result: Public structures
Slot, result: Private structures
Slot, right: Private structures
Slot, secret: Public structures
Slot, secrets: Public structures
Slot, targets: Public structures
Slot, time: Public structures
Slot, traces: Private structures
Slot, up: Private structures
Slot, upward-rx-latch: Public classes
Slot, upward-tx-latch: Public classes
Special Variable, *courier-processing-clock-rate*: Private special variables
Special Variable, *dereferencing-table*: Private special variables
Special Variable, *local-courier*: Public special variables
Special Variable, *logger*: Public special variables
Special Variable, *message-traces*: Private special variables
Special Variable, *routing-time-step*: Private special variables

T
targets: Public structures
time: Public structures
traces: Private structures

U
up: Private structures
upward-rx-latch: Public classes
upward-tx-latch: Public classes


A.4 Data types

Jump to:   A   B   C   D   E   F   G   L   M   N   P   Q   R   S   T   U  
Index Entry  Section

A
address: Public structures
aether: The aether system
aether: The aether package
aether.asd: The aether/aether․asd file

B
broadcast-frame: Public structures

C
cast.lisp: The aether/cast․lisp file
cheap-heap.lisp: The aether/cheap-heap․lisp file
Class, process: Public classes
Class, process-lockable: Public classes
Class, process-message-emissary: Private classes
convergecast-frame: Public structures
courier: Public structures
courier-gridded: Private structures
courier.lisp: The aether/courier․lisp file

D
debug: The aether/debug module
dereference.lisp: The aether/process/dereference․lisp file
dpu-helpers.lisp: The aether/process/dpu-helpers․lisp file

E
emissary.lisp: The aether/process/emissary․lisp file
event: Public structures
event.lisp: The aether/event․lisp file

F
File, aether.asd: The aether/aether․asd file
File, cast.lisp: The aether/cast․lisp file
File, cheap-heap.lisp: The aether/cheap-heap․lisp file
File, courier.lisp: The aether/courier․lisp file
File, dereference.lisp: The aether/process/dereference․lisp file
File, dpu-helpers.lisp: The aether/process/dpu-helpers․lisp file
File, emissary.lisp: The aether/process/emissary․lisp file
File, event.lisp: The aether/event․lisp file
File, lock.lisp: The aether/lock․lisp file
File, logger.lisp: The aether/debug/logger․lisp file
File, message.lisp: The aether/message․lisp file
File, network.lisp: The aether/network․lisp file
File, package.lisp: The aether/package․lisp file
File, process.lisp: The aether/process/process․lisp file
File, queue.lisp: The aether/queue․lisp file
File, rpc.lisp: The aether/rpc․lisp file
File, trace.lisp: The aether/debug/trace․lisp file
File, utilities.lisp: The aether/utilities․lisp file

G
grid-neighbors: Private structures

L
lock.lisp: The aether/lock․lisp file
logger: Private structures
logger.lisp: The aether/debug/logger․lisp file

M
message: Public structures
message-lock: Public structures
message-rpc-done: Public structures
message-rts: Public structures
message-unlock: Private structures
message.lisp: The aether/message․lisp file
Module, debug: The aether/debug module
Module, process: The aether/process module

N
network.lisp: The aether/network․lisp file

P
Package, aether: The aether package
package.lisp: The aether/package․lisp file
process: The aether/process module
process: Public classes
process-lockable: Public classes
process-message-emissary: Private classes
process.lisp: The aether/process/process․lisp file

Q
queue.lisp: The aether/queue․lisp file

R
rpc.lisp: The aether/rpc․lisp file

S
simulation: Public structures
Structure, address: Public structures
Structure, broadcast-frame: Public structures
Structure, convergecast-frame: Public structures
Structure, courier: Public structures
Structure, courier-gridded: Private structures
Structure, event: Public structures
Structure, grid-neighbors: Private structures
Structure, logger: Private structures
Structure, message: Public structures
Structure, message-lock: Public structures
Structure, message-rpc-done: Public structures
Structure, message-rts: Public structures
Structure, message-unlock: Private structures
Structure, simulation: Public structures
Structure, tracer: Private structures
System, aether: The aether system

T
trace.lisp: The aether/debug/trace․lisp file
tracer: Private structures

U
utilities.lisp: The aether/utilities․lisp file