cameo issueshttps://code.ill.fr/cameo/cameo/-/issues2020-10-06T14:53:56+02:00https://code.ill.fr/cameo/cameo/-/issues/23Documentation2020-10-06T14:53:56+02:00yannick legocDocumentationThe documentation with concepts and commented examples must be written
Explain:
* What is an application
* What is an App = application instance
Draw the general case: multiple App instance -> multiple instance process -> application
*...The documentation with concepts and commented examples must be written
Explain:
* What is an application
* What is an App = application instance
Draw the general case: multiple App instance -> multiple instance process -> application
* Configuration file with options
* Managed and unmanaged applications
* Communication patterns
It will also contain:
* Publisher/Subscriber: dead publisher application. Clarify: Subscriber.hasEnded() returns false
* Study how the project is related to others: for documentation/article
* Asynchronous API, future/promise model, how it is not enough.
* Study Erlang
https://en.wikipedia.org/wiki/Erlang_(programming_language)
* thread safety: clarifyMischttps://code.ill.fr/cameo/cameo/-/issues/24Check null values passed to send data functions/methods2020-10-01T14:20:25+02:00yannick legocCheck null values passed to send data functions/methodsFor functions: This.setResult, Publisher.send, Requester.send.
The simplest solution is to do nothing if data are null.For functions: This.setResult, Publisher.send, Requester.send.
The simplest solution is to do nothing if data are null.Mischttps://code.ill.fr/cameo/cameo/-/issues/3Object lifecycle management: terminate()2022-01-18T15:40:19+01:00yannick legocObject lifecycle management: terminate()The example of a use of Cameo in a real project [nomad-client-cpp](https://code.ill.fr/instrument-control-protos/nomad-client-cpp) shows that the lifecycle of objects can be improved.
The Python API binding should require this too.
The...The example of a use of Cameo in a real project [nomad-client-cpp](https://code.ill.fr/instrument-control-protos/nomad-client-cpp) shows that the lifecycle of objects can be improved.
The Python API binding should require this too.
The objects associated to the context of server, e.g subscriber must be destroyed before server. That is realised by forcing This::terminate() because the shared pointer of subscriber is attached to the internal stop handler.
Is it possible to simplify and avoid this call?
A solution is to call terminate() on all objects.Mischttps://code.ill.fr/cameo/cameo/-/issues/34Console output stream sync2020-10-14T15:48:47+02:00yannick legocConsole output stream syncUsed in console, the output stream can block.
It seems to come from the fact that the subscriber has not yet subscribed.
Solution: use a sync socket to check it is really.
That means that we must define a new request SYNC_STREAM like SYN...Used in console, the output stream can block.
It seems to come from the fact that the subscriber has not yet subscribed.
Solution: use a sync socket to check it is really.
That means that we must define a new request SYNC_STREAM like SYNC.
The server sends a SYNC_STREAM message on the concerned output stream.Mischttps://code.ill.fr/cameo/cameo/-/issues/40Stopping time and stop handler2020-11-02T18:31:10+01:00yannick legocStopping time and stop handlerThe stopping time meaning has been reviewed: it is used only when a stop handler is defined (by handleStop() or executable). It can be overriden with handleStop().The stopping time meaning has been reviewed: it is used only when a stop handler is defined (by handleStop() or executable). It can be overriden with handleStop().Mischttps://code.ill.fr/cameo/cameo/-/issues/41Check waitForStop() execution2020-10-01T14:45:12+02:00yannick legocCheck waitForStop() executionWhat happens if waitForStop occurs between hasToBeKilled and other subsequent calls?What happens if waitForStop occurs between hasToBeKilled and other subsequent calls?Mischttps://code.ill.fr/cameo/cameo/-/issues/52Avoid crash in connectToStarter2022-04-20T13:45:11+02:00yannick legocAvoid crash in connectToStarterIf the starter application is not accessible (hostname not resolvable), the C++ API is crashing.
Verify how it behaves in Java.
To test, change host="..." in the cameo config file of the starter application.If the starter application is not accessible (hostname not resolvable), the C++ API is crashing.
Verify how it behaves in Java.
To test, change host="..." in the cameo config file of the starter application.Mischttps://code.ill.fr/cameo/cameo/-/issues/53Review getActualState()2020-10-10T10:24:25+02:00yannick legocReview getActualState()It seems that sometimes the function Instance::now() does not return the current state. It happens with NomadGUI.
Does it come from the zeromq pub/sub? Some events could be lost?
If it is the case, one solution would be to poll at a low ...It seems that sometimes the function Instance::now() does not return the current state. It happens with NomadGUI.
Does it come from the zeromq pub/sub? Some events could be lost?
If it is the case, one solution would be to poll at a low frequency.
Test: start and kill an application. Follow it using now() in parallel. The workflow should never block.Mischttps://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/72Review LifecycleApplicationThread2020-10-01T21:54:35+02:00yannick legocReview LifecycleApplicationThreadDefine clearly the state graph with all the concepts:
- starting time
- etc.
The error state should only happen when the process returns an error code.Define clearly the state graph with all the concepts:
- starting time
- etc.
The error state should only happen when the process returns an error code.Mischttps://code.ill.fr/cameo/cameo/-/issues/83Remove cerr2022-04-20T13:40:16+02:00yannick legocRemove cerrMischttps://code.ill.fr/cameo/cameo/-/issues/88Use delete on copy and assignment constructors2020-10-13T14:53:43+02:00yannick legocUse delete on copy and assignment constructorsTo provide more security on the classes.To provide more security on the classes.Mischttps://code.ill.fr/cameo/cameo/-/issues/99Add equals operator for Endpoint class2020-11-05T13:39:47+01:00yannick legocAdd equals operator for Endpoint classMischttps://code.ill.fr/cameo/cameo/-/issues/113Directory reorganization2022-01-20T16:44:35+01:00yannick legocDirectory reorganization```
cameo/java/server
/api
/console
/cpp/api
/coms
/python/api
...
``````
cameo/java/server
/api
/console
/cpp/api
/coms
/python/api
...
```Mischttps://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/122Move tests into Cameo project2022-01-20T16:44:27+01:00yannick legocMove tests into Cameo projectTests should be incorporated into the Cameo project.Tests should be incorporated into the Cameo project.Mischttps://code.ill.fr/cameo/cameo/-/issues/124Check This initialization in coms creation2022-01-17T15:00:29+01:00yannick legocCheck This initialization in coms creationMischttps://code.ill.fr/cameo/cameo/-/issues/130Merge init requests2022-02-28T10:37:34+01:00yannick legocMerge init requestsMerge Server API init requests: version, proxy ports, etc.Merge Server API init requests: version, proxy ports, etc.Mischttps://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/132Objects ZMQ management2022-03-03T11:07:15+01:00yannick legocObjects ZMQ managementIt is possible to automatically terminate created objects e.g. OutputStreamSocket, etc.It is possible to automatically terminate created objects e.g. OutputStreamSocket, etc.Mischttps://code.ill.fr/cameo/cameo/-/issues/133Multi Responder2022-03-18T10:55:13+01:00yannick legocMulti ResponderUsing the multithreaded server example, it is possible to define a multithreaded Responder.
Archi:
Router = socket ROUTER + DEALER
Responder = socket REPUsing the multithreaded server example, it is possible to define a multithreaded Responder.
Archi:
Router = socket ROUTER + DEALER
Responder = socket REPMisc