1.3 library(json_rpc_client): JSON RPC client
All Application Manual Name SummaryHelp

  • Documentation
    • Reference manual
    • Packages
      • SWI-Prolog JSON library
        • Supporting JSON
          • library(json_rpc_client): JSON RPC client
            • json_call/4
            • json_notify/3
            • json_batch/5
            • json_full_duplex/2
Availability::- use_module(library(json_rpc_client)).(can be autoloaded)
Source[det]json_call(+Stream, +Goal, -Result, +Options)
Run Goal on a JSON RPC service identified by Stream and wait for Result. This predicate may be called from multiple threads. As replies come in in arbitrary order, this predicate starts a thread the reads the replies from Stream and informs the calling thread using a Prolog message queue.

If Stream is closed this library terminates the thread and related message queue.

Goal is a callable term. The functor name is the method. If there is a single argument that is a dict, we invoke a JSON-RPC method using named arguments. If there is a single argument that is a list, use the elements of the list as positional arguments. If there are zero or more than one arguments use these as positional arguments. Examples:
TermMethodTypeJSON (params)


f(#{a:1,b:2} fnamed{"a":1, "b":2}
f(["a", 42]) fpositional["a", 42]
f([#{"a":1}])fpositional[{"a":1}]
f() fpositional[]
f("a", 42) fpositional["a", 42]

Options processed: