cameo issueshttps://code.ill.fr/cameo/cameo/-/issues2024-01-25T10:43:31+01:00https://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/143Subscriber can subscribe to many endpoints2022-10-25T17:01:02+02:00yannick legocSubscriber can subscribe to many endpointshttps://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/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.https://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/16Deployment of a new version of a managed application2020-10-01T14:14:32+02:00yannick legocDeployment of a new version of a managed application* Solution
* new set of states for an Application that are independent from the current states: UP_TO_DATE, WAITING_FOR_UPDATE (version is waiting to be installed), UPDATING, ERROR (blocking the application?). We call it the update stat...* Solution
* new set of states for an Application that are independent from the current states: UP_TO_DATE, WAITING_FOR_UPDATE (version is waiting to be installed), UPDATING, ERROR (blocking the application?). We call it the update state.
* push a new version on a Cameo server. It is a request when processed:
* application becomes WAITING_FOR_UPDATE immediately
* the new version data is saved locally and replaces the previous new version if it is not installed yet
* the server installs it when the application is stopped (option: stop the application immediately)
* the application has the state UPDATING (new state in the current list)
* the config file is modified after each installation (to memorize the version number)
* the server shall not be brutally stopped
* enable to stop nicely the server
* default installation: copy file (jar) to install_directory, untar a tar to install_directory
* or an installation script
* command line: cmo app1 update app1.jar 1.2.3
* monitoring notifications:
* the Cameo server publishes a new status when the version is installed
* status VERSION value
* version in the application info
* class This can access versionhttps://code.ill.fr/cameo/cameo/-/issues/9Create a peer to peer network of Cameo servers2017-04-10T14:45:40+02:00yannick legocCreate a peer to peer network of Cameo serversWith the existence of Cameo servers running on different computers, it becomes easy to create a peer to peer network of Cameo servers.
The first thing is to create the links between Cameo servers. It will be done in the configuration ...With the existence of Cameo servers running on different computers, it becomes easy to create a peer to peer network of Cameo servers.
The first thing is to create the links between Cameo servers. It will be done in the configuration file or programmatically for a more dynamic way.
The link is twoway so that when a server attaches another one, both become available for the other one.
A simple API update can provides interesting features:
+ Server.getLinkedServerList(): ServerList
ServerList:
+ start(...): same interface than Server (add a special interface for common Server and ServerList?)
+ connect(...): same interface than Server
+ ...
+ iterator(): ServersIterator.
The ServersIterator class provides a dynamic iteration from the closest to the furthest (for node distance).
Load balancing is not implemented in the API: a simple start can be used: if it fails then try another server. The failure can happen if the application can only run once and is already running. Generalize the attribute multiple to have a maximum fixed number of instances?
Provide a load factor or simply let the client code do it?
Features must be simple. Complexity shoud be implemented in the client code.