-
Notifications
You must be signed in to change notification settings - Fork 0
Home
OSNIP is a lightweight protocol for structured communication among collaborating nodes distributed across disparate systems.
The protocol provides a means of discovery and reflection as a strict subset of the Open Sound Control protocol. As such, it functions as a layer on top of OSC and Bonjour.
- Clearly defined and lightweight query syntax
- Structured response via JSON
- Class-based structured address space
- Namespace discovery
- ease of workflow (workflow becomes DRY)
- nodes are able to provide services
- works on top of OSC and Bonjour
Structured address space
directory:/parent/name.instance:attribute/sub
directory:/parent/name.instance:method
Query and namespace discovery
/foo/bar |
(call method) |
/foo/bar> |
(query) |
/foo/bar< 45 |
(response to query) |
/foo/bar 45 |
(some value being produced, e.g. as a return from a module) |
/foo/bar:priority! 1 |
(enable listening) |
/foo/bar:priority! 0 |
(disable listening) |
/foo/bar:priority& 12 |
(listening flow) |
/foo/bar:namespace> |
nodes and atrributes (not states) |
/foo/bar:namespace< { JSON String } |
Nodes may have a value
attribute, which is otherwise implicit.
/foo/bar:value> { list of criteria as JSON String }
/foo/bar:value< a-value
Do we wish to fetch snapshots?
/foo/bar:state> { list of criteria as JSON String }
– if e.g. want only certain attributes, we’ll specify this in the list of criteria
/foo/bar:state< { list of all attributes as JSON String }
We still need to specify
- the criteria filtering JSON schema
- the listening character
- the notification (e.g. error) character and syntax