Meadow Requirements - modrpc/info GitHub Wiki
- A Meadow namespace should provide a namespace (i.e. name-? table) of devices and services.
- The naming of devices should be independent of the transport address which can change over time.
- A namespace coincides with the security-enforced domain.
- A namespace is maintained by a special device called NAMESERVER. Any device which runs name service is a NAMESERVER. Every device must have at least one NAMESERVER.
- Namespace can be linked to form a larger namespace.
- After two namespaces, say A and B, are linked, a device in one namespace can access a device in another namespace.
- Devices in namespace A can access any device in namespace B by using a prefix "B:".
- ANALOGY: UNIX hierarchical file system
- Two linked namespace can be unliked whenever it's not necessary to be linked.
- A device should be able to export three services to the outside services.
- property service
- event generation
- RPC
- A device should provide a way to modify its own behavior.
- Internally, this is a reactor but users don't need to know reactors.
- To users, it's just adding callback to an event.
- add_callback(event, (*fun)());
- Service must be deployable statically or dynamically.
-
Name service
- Any device that provides name service is a NAMESERVER.
- Name service is just a set of RPC functions used to maintain namespace.
- NAMESERVER maintains (device, addr) and (linked-namespace-nameserver, addr)
- A process is defined as an execution of event-reaction sequence.
- The lifetime of a process begins with a firing of a root event and ends until all the reactors fired by the event instance finishes their execution.
- Should a process be a singleton (like Verilog process) or a forked thread?
- A process call chain is defined as the sequence of function calls and/or event-reactions, starting with an event instance which wakes up a process. The first event must be either a timer event or an external event injected from outside (e.g. user's touchscreen input).
- A method for killing all related processes in a process call chain must be provided.