cameo issueshttps://code.ill.fr/cameo/cameo/-/issues2022-05-19T14:59:05+02:00https://code.ill.fr/cameo/cameo/-/issues/68Check compatibility2022-05-19T14:59:05+02:00yannick legocCheck compatibilityWhen connecting to a remote cameo server, it is necessary to check the version so that it is compatible with the API version.
The server must verify that the request is acceptable or not (i.e. a request from API v1 is not compatible with...When connecting to a remote cameo server, it is necessary to check the version so that it is compatible with the API version.
The server must verify that the request is acceptable or not (i.e. a request from API v1 is not compatible with v2).New version of APIshttps://code.ill.fr/cameo/cameo/-/issues/61Review unique_ptr vs shared_ptr2020-10-01T15:00:36+02:00yannick legocReview unique_ptr vs shared_ptrRequest::getServer() should return a shared_ptr because it can be called many times.Request::getServer() should return a shared_ptr because it can be called many times.New version of APIshttps://code.ill.fr/cameo/cameo/-/issues/29States in objects2020-10-01T14:27:54+02:00yannick legocStates in objectsEach connected object must have a clear state.Each connected object must have a clear state.New version of APIshttps://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/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/154Prepare binaries for Windows2024-01-25T10:43:31+01:00yannick legocPrepare binaries for WindowsIncluding the proxy routersIncluding the proxy routershttps://code.ill.fr/cameo/cameo/-/issues/152Switch to version 3.0.02024-01-24T10:49:09+01:00yannick legocSwitch to version 3.0.0Next release to 3.0.0Next release to 3.0.0https://code.ill.fr/cameo/cameo/-/issues/146Debug restart app functionality2023-06-08T15:17:02+02:00yannick legocDebug restart app functionalityhttps://code.ill.fr/cameo/cameo/-/issues/145Bad endpoint to detect for "tcp:/host:9000"2023-05-19T15:58:16+02:00yannick legocBad endpoint to detect for "tcp:/host:9000"https://code.ill.fr/cameo/cameo/-/issues/143Subscriber can subscribe to many endpoints2022-10-25T17:01:02+02:00yannick legocSubscriber can subscribe to many endpointshttps://code.ill.fr/cameo/cameo/-/issues/138Group exceptions in Doxygen2022-07-22T15:38:06+02:00yannick legocGroup exceptions in Doxygenhttps://code.ill.fr/cameo/cameo/-/issues/137Review connectTo functions2022-07-13T09:27:09+02:00yannick legocReview connectTo functionsIt is possible to separate the Server creation from the connect:
- Request::createRequesterServer()
- Request::connectToRequester(server) with server previously created
So that it is possible to share the server.It is possible to separate the Server creation from the connect:
- Request::createRequesterServer()
- Request::connectToRequester(server) with server previously created
So that it is possible to share the server.https://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/128Console commands to add/edit an app2022-02-22T09:22:48+01:00yannick legocConsole commands to add/edit an appFor instance:
cmo add myapp /usr/local/bin/myapp
cmo set myapp multiple yes
...For instance:
cmo add myapp /usr/local/bin/myapp
cmo set myapp multiple yes
...https://code.ill.fr/cameo/cameo/-/issues/126Stream optimization2022-02-11T09:39:17+01:00yannick legocStream optimizationCurrently the stream topic is applicationName:stream so that the subscriber client receives the messages from all the instances of the same application.
It is possible to use the topic applicationId:stream but it implies to:
- Separate t...Currently the stream topic is applicationName:stream so that the subscriber client receives the messages from all the instances of the same application.
It is possible to use the topic applicationId:stream but it implies to:
- Separate the start request into two requests: request start which gives a new id and then start with this id so that the client can sync with the publisher on topic id:stream before starting the app.https://code.ill.fr/cameo/cameo/-/issues/125Cross compilation2022-01-18T16:59:14+01:00yannick legocCross compilationhttps://cmake.org/cmake/help/book/mastering-cmake/chapter/Cross%20Compiling%20With%20CMake.html
https://stackoverflow.com/questions/55197902/cmake-cross-compiling-linux-to-windows-with-mingw-does-not-find-some-system-heahttps://cmake.org/cmake/help/book/mastering-cmake/chapter/Cross%20Compiling%20With%20CMake.html
https://stackoverflow.com/questions/55197902/cmake-cross-compiling-linux-to-windows-with-mingw-does-not-find-some-system-heahttps://code.ill.fr/cameo/cameo/-/issues/97Remove server instances from API2020-10-26T21:56:44+01:00yannick legocRemove server instances from APIThe server instances are not easy to manage and in fact not very important.
We can imagine that the server instances are a pool managed implicitly.
This would help to have only one server instance per server and solve the server inst...The server instances are not easy to manage and in fact not very important.
We can imagine that the server instances are a pool managed implicitly.
This would help to have only one server instance per server and solve the server instance problem for connectToRequester().
We could imagine:
```
App app(name, endpoint)
App app(id, endpoint)
app.start()
app.connect()
app.stop();
app.waitFor();
Apps apps(name, endpoint) => the set of App
apps.kill();
apps.waitFor();
for (App app in apps) { use of key values to discriminate }
```
Q: Is it still interesting to be able to wait for a non-terminal state? A state handler would be more convenient.
Q: However, what to do with a server that has no application instances anymore? Wait before terminating it (cf strategy for linked apps)New version of APIshttps://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/85Socket linger crash2020-10-10T10:48:38+02:00yannick legocSocket linger crash- Encountered on PN1
- Null pointer: timeout causes a reset (pointer becomes null) and then crash
Why is there no init after reset?
The O2 flag could be at the origin? No destructor called?
Tests on gamma36 without request->...- Encountered on PN1
- Null pointer: timeout causes a reset (pointer becomes null) and then crash
Why is there no init after reset?
The O2 flag could be at the origin? No destructor called?
Tests on gamma36 without request->connectToRequester() in DatabaseResponder: no problem (timeouts forced)
Some crashes happen by ConnectionTimeout in DatabaseResponder: ok, exception not caught.
Why then it does not happen when socket is null? Remove virtual ~
Try:
- Sleep at the end of Server() to see if the event thread has an influence.Bugs to be checkedhttps://code.ill.fr/cameo/cameo/-/issues/63Thread-safety to be checked2020-02-14T08:27:26+01:00yannick legocThread-safety to be checkedCheck the classes: Server, etc. See if they can be thread-safe: unique_ptr is used to limit the risk of using in parallel.Check the classes: Server, etc. See if they can be thread-safe: unique_ptr is used to limit the risk of using in parallel.