JsonRpcService

Description

The JsonRpcService object provides mechanisms for exposing user-defined functions via JSON-RPC. Additionally arbitrary user-defined properties inside this object can be read and written via getProperty() and setProperty().

Overview

Properties

Properties

serviceName

This property holds the name of the JSON-RPC service user for registering to the JSON-RPC server. It is prepended to all method names, i.e. foo() can be called through the JSON-RPC method <serviceName>.foo.

This property was introduced in InCore 2.5.

› Type:String
› Default:incore
› Signal:serviceNameChanged()
› Attributes:Writable

Methods

getProperty(Variant name)

This method can be called remotely and returns the property specified by name if it exists.

› Returns:Variant

setProperty(Variant name, Variant value)

This method can be called remotely and sets the property specified by name to the given value.

› Returns:Variant

Example

import InCore.Foundation 2.5

Application {

    JsonRpcClient {
        id: rpcClient
        onErrorCodeReceived: console.log("Call to", name, "returned with error code", errorCode)
        onErrorMessageReceived: console.log("Call to", name, "returned with error message", errorMessage)
    }

    onCompleted:  {
        rpcClient.getProperty("systemClock", (value) => { console.log("System clock:", value) })
        rpcClient.call("callMe", ["My message"], (retval) => { console.log("callMe() returned:", retval)})
        rpcClient.call("nonExistingFunction", [])
    }

    MeasurementGroup {
        id: myMeasurements
        Measurement { id: meas1; data: Math.random() }
        Measurement { id: meas2; data: Math.random() }
        Measurement { id: meas3; data: Math.random() }
    }

    System {
        id: system
    }

    JsonRpcServer {
        JsonRpcService {
            // calling getProperty("myMeasurements") via JSON-RPC will return JSON-serialized representation
            // of the MeasurementGroup
            readonly property alias measurements: myMeasurements

            // allow to read and write the system clock via JSON-RPC e.g. by calling
            // setProperty("systemClock", 1569241016)
            property alias systemClock: system.clock

            function callMe(message)
            {
                console.log("I have a message for you:", message)
                return [ "Hello", "world" ]
            }
        }
    }
}