Open gunnarx opened 2 years ago
> (To be further determined - how complete is our include/reference concept?)
A good start. Reading..
A key characteristic of a service in support of SOA
I think you should at least spell out SOA in the first use.
all Interfaces that make up a service must be mentioned within this file*
There seems to be no corresponding reference. Is it supposed to be referring to the sentence prefixed with '>' a couple of paras down?
Better to put it in a *.md file in a PR to simplify review? Good start - I think it would be good to add at least placeholders for Events and Properties, to clarify difference between Methods/Events/Properties.
Concerning streaming replies we had some discussion on slack in April 4th-5th in rpc channel. There I created a proposal:
With this definition a "typical" VSS read or write would be an atomic call, while a "typical" VSS subscribe would be a stream call. Magnus included some examples in Slack. This way we can already in VSC express that e.g. MoveWindow is a stream call where you can get zero or more events showing current position of window and status of the request
With the definition above we can define "event" as something that is either broadcasted by the server, or received triggered by a method.
For property we could possibly describe it as a shortcut for get/set-methods, e.g. if you specify property X, that gets the same results as specifying the two methods getX and setX.
With the definition above we can define "event" as something that is either broadcasted by the server, or received triggered by a method.
For property we could possibly describe it as a shortcut for get/set-methods, e.g. if you specify property X, that gets the same results as specifying the two methods getX and setX.
Easier for me to say at the high level, than it be proven in the details but wouldn't there be value in staying as close as possible and ideally logically equivalent, to the approach in OpenAPI and AsyncAPI? Although possibly not in definition format if that is hard to cherry pick or that does not make sense for other reasons. Equivalence or a sub-set of it supports smoother integration. Particularly for those coming from those worlds.
Atomic VSC calls are methods specifying "out" parameters. Stream VSC calls are methods specifying "event(s)" instead of "out" A VSC method cannot specify both "out" and "event"
I am making a different proposal that could be summarized as:
Return Value is a unique thing (it could be done with "out" parameter, but I think we should have a special status for it. Having a return value is common behavior for most programming environments. And if some environment does not support it, it can be converted to an out parameter in the code generation of course.)
Return values can be sent at the end of the method, or continuously. One concept works for both, and I think it makes sense because it serves the same purpose (communicate if execution has completed and/or if successful).
The core reason for this this is that the Methods should be defined the same way whether they are later executed as blocking or non-blocking, instead of making this choice already when the method is defined. In other words, we can delay the decision of whether a method is of the blocking or non-blocking type. In some cases this is also limited by the target environment, so if you avoid making this choice immediately then the API is more reusable in many contexts.
The full text proposal is coming, so I propose to give feedback there.
EDIT: I think the above is the simplest way (explicitly name the Datatype of the return value), but something that could be considered is if a return value could be equal to an already defined Event. Let's see after we have agreed on the description of Event.
See COVESA/vehicle_service_catalog#41 for a PR where you can comment if you prefer it
On the previous meeting I was requested to start on a draft of terms definitions, to find consensus around the most key concepts of the VSC language. First proposal below.