Skip to content
Timothy Place edited this page Jun 9, 2013 · 4 revisions

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.

Features include

  • Clearly defined and lightweight query syntax
  • Structured response via JSON
  • Class-based structured address space
  • Namespace discovery

Benefits include

  • ease of workflow (workflow becomes DRY)
  • nodes are able to provide services
  • works on top of OSC and Bonjour

Syntax Examples

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
Clone this wiki locally