cameo issueshttps://code.ill.fr/cameo/cameo/-/issues2024-01-29T15:52:10+01:00https://code.ill.fr/cameo/cameo/-/issues/153This::init() with Endpoint parameter2024-01-29T15:52:10+01:00yannick legocThis::init() with Endpoint parameterhttps://code.ill.fr/cameo/cameo/-/issues/149Subscriber receive() timeout2024-01-23T16:56:33+01:00yannick legocSubscriber receive() timeoutAdd a possible timeout on receive() calls.Add a possible timeout on receive() calls.https://code.ill.fr/cameo/cameo/-/issues/7Linked apps2023-11-03T10:45:42+01:00yannick legocLinked appsAdd the option *LINKED* to start() to the client APIs.
This implies:
- When the app is terminated, the stop request is sent to each linked app (not kill).
A new function is added to the API: connectLinkedApps() : list of Instance
So th...Add the option *LINKED* to start() to the client APIs.
This implies:
- When the app is terminated, the stop request is sent to each linked app (not kill).
A new function is added to the API: connectLinkedApps() : list of Instance
So that a special stop can be made on the linked apps with the stop handler.
The link mechanism can be implemented:
- App sa: the starter
- App la: the linked app
- Server of the starter: ss
- Server of the linked app: ls
Solution:
- The linked attribute is passed to ls.
- An event thread listening to ls is started in ss if it is not already started.
- The event thread must be synchronized.
- When ls receives notification of a terminal state for sa, then la is stopped.
- The event thread has a timeout: when there is no activity on a linked app, the thread terminates.Server v1 update (2)https://code.ill.fr/cameo/cameo/-/issues/60Add a sync mode to subscriber2023-09-22T09:12:22+02:00yannick legocAdd a sync mode to subscriberThe subscriber does not know when it is really connected. We need to add an option at the creation of the subscriber.
However this implies to review the publisher which must have a thread running the responder.The subscriber does not know when it is really connected. We need to add an option at the creation of the subscriber.
However this implies to review the publisher which must have a thread running the responder.Mischttps://code.ill.fr/cameo/cameo/-/issues/144Add timeout when contacting starter server2023-09-01T16:25:19+02:00yannick legocAdd timeout when contacting starter serverAn app can block when its starter is unreachable. Add a timeout?An app can block when its starter is unreachable. Add a timeout?https://code.ill.fr/cameo/cameo/-/issues/81Add options to connect() and start()2023-09-01T16:24:08+02:00yannick legocAdd options to connect() and start()Some options can be interesting:
- STOP : stop the application if executing
- KILL : kill the application if executing
- START : start the application if not executing (for connect)Some options can be interesting:
- STOP : stop the application if executing
- KILL : kill the application if executing
- START : start the application if not executing (for connect)New version of APIshttps://code.ill.fr/cameo/cameo/-/issues/142Cancel and timeout for Requester and Subscriber init()2023-09-01T15:28:59+02:00yannick legocCancel and timeout for Requester and Subscriber init()https://code.ill.fr/cameo/cameo/-/issues/1Blocking calls: cancel2023-07-25T08:32:28+02:00yannick legocBlocking calls: cancelThe C++ and Java API provide blocking calls:
* Publisher.waitForSubscribers
* Subscriber.receive
* Requester.request
* Responder.receive
* Instance.waitFor
The current implementation of cancel - e.g. called from a stop handler does not ...The C++ and Java API provide blocking calls:
* Publisher.waitForSubscribers
* Subscriber.receive
* Requester.request
* Responder.receive
* Instance.waitFor
The current implementation of cancel - e.g. called from a stop handler does not work well. It supposes the objects are waiting in a previous call.
An improvement must be done:
* Each object has the state waiting: true/false
* Each object has the state canceled: true/false
The canceled state is terminal: once an object is canceled it cannot revert to uncanceled.
These states must be managed properly by the associated waiting object.
* A common mutex blocks the access of the two states
* waiting false then canceled true: does not send the cancel "signal"
* waiting true then canceled true: sends the cancel "signal"
* canceled true then waiting true: does not send the cancel "signal" but the call returns immediately
We can add the create calls for the different objects except Instance. How to manage?New version of APIshttps://code.ill.fr/cameo/cameo/-/issues/127Cancel subscriber and requester when the app has finished2023-07-25T08:30:52+02:00yannick legocCancel subscriber and requester when the app has finishedhttps://code.ill.fr/cameo/cameo/-/issues/115Review documentation2023-07-18T16:56:18+02:00yannick legocReview documentationKeep the markdown files in the project and generate a wiki or a website so that the files are always readable from the project.Keep the markdown files in the project and generate a wiki or a website so that the files are always readable from the project.Mischttps://code.ill.fr/cameo/cameo/-/issues/2Timeouts2022-10-19T14:14:50+02:00yannick legocTimeoutsEvery blocking call must be able to return after a timeout.
For a blocking call like waitFor, periodical tests should be provided.
Zeromq reliability: http://zguide.zeromq.org/php:chapter4
Failure example: remote app starts but a netwo...Every blocking call must be able to return after a timeout.
For a blocking call like waitFor, periodical tests should be provided.
Zeromq reliability: http://zguide.zeromq.org/php:chapter4
Failure example: remote app starts but a network failure happens before the setResult.
The change of state is ok but not the starter which blocks on getResult in the recv call.
Server initialization must throw a ConnectionTimeout or return boolean in case of timeout.New version of APIshttps://code.ill.fr/cameo/cameo/-/issues/140max number of applications2022-10-19T14:13:33+02:00Shervin Nourbakhshmax number of applicationsIt would be nice to have a way to limit the maximum number of applications with a given name.
```
<application name="mcstas_server" stream="yes" max_applications="10" restart="no" starting_time="0" retries="0" stopping_time="1" log_...It would be nice to have a way to limit the maximum number of applications with a given name.
```
<application name="mcstas_server" stream="yes" max_applications="10" restart="no" starting_time="0" retries="0" stopping_time="1" log_directory="default" >
<start executable="/tmp/devel/bin/mcstas_server" args="-d /dev/shm/panosc/prod/"/>
</application>
```yannick legocyannick legoc2022-10-09https://code.ill.fr/cameo/cameo/-/issues/139Finer logs not logged with finest level2022-08-16T17:18:19+02:00yannick legocFiner logs not logged with finest levelhttps://code.ill.fr/cameo/cameo/-/issues/123Unify error and stop executables arguments2022-04-22T10:58:31+02:00yannick legocUnify error and stop executables argumentsRemove $PID replacement and set the PID as the first argument.Remove $PID replacement and set the PID as the first argument.Server v1 update (2)https://code.ill.fr/cameo/cameo/-/issues/109Default values in server config file2022-04-22T10:38:48+02:00yannick legocDefault values in server config fileDefault values not set with the "default" string but by the absence of the attribute.Default values not set with the "default" string but by the absence of the attribute.https://code.ill.fr/cameo/cameo/-/issues/14toString format2022-04-22T09:21:36+02:00yannick legoctoString formatThe encoding of toString methods can be improved by using JSON.The encoding of toString methods can be improved by using JSON.JSON and nameshttps://code.ill.fr/cameo/cameo/-/issues/94Rename State UNKNOWN into NIL2022-04-22T09:20:50+02:00yannick legocRename State UNKNOWN into NILNew version of APIshttps://code.ill.fr/cameo/cameo/-/issues/131Review ZMQ contexts in APIs2022-04-20T14:40:15+02:00yannick legocReview ZMQ contexts in APIsCurrently, one context is open by Server. It should be better to have one context per program: in Factory, createContext() replaced by getContext() which has a static context variable.Currently, one context is open by Server. It should be better to have one context per program: in Factory, createContext() replaced by getContext() which has a static context variable.Mischttps://code.ill.fr/cameo/cameo/-/issues/6Add user rendezvous to the list of status2022-04-20T13:47:48+02:00yannick legocAdd user rendezvous to the list of statusGeneralize the status (RUNNING, STOPPING, etc.) by adding user status to be used as rendezvous between two applications. The client APIs must provide a customizable setState(string) function/method.Generalize the status (RUNNING, STOPPING, etc.) by adding user status to be used as rendezvous between two applications. The client APIs must provide a customizable setState(string) function/method.https://code.ill.fr/cameo/cameo/-/issues/48Add the default constructor to Server class2022-04-20T13:47:11+02:00yannick legocAdd the default constructor to Server classWith Application::getEndpoint() as endpoint.With Application::getEndpoint() as endpoint.New version of APIs