aether
aether copied to clipboard
Complex routing protocols
In network.lisp
, one finds the following comment:
;; IMPORTANT NOTE: On reflection, a nondeterministic routing strategy will mean
;; that it's possible for violate message delivery order, which is no bueno.
;; Either this function should always be deterministic, or we we will have
;; to put up with out-of-order behavior, or we will have to reject out-of-
;; order messages. For now, let's stick with the first option.
We actually don't need to put up with out-of-order behavior: if a message originator also transmits the ID of the message it previously sent to a given address, the receiving courier can wait until that message is also received before installing this message in the appropriate inbox. At present, send-message
is implemented too minimally to support this, and I think making it less minimal would affect one's ability to use it (with this guarantee) outside of the context of a process
—but it is possible to make this modification.
This is worth doing, as it opens the door to more complicated routing protocols and the alleviation of network pressure.