cameo issueshttps://code.ill.fr/cameo/cameo/-/issues2020-10-01T14:57:35+02:00https://code.ill.fr/cameo/cameo/-/issues/10State handlers2020-10-01T14:57:35+02:00yannick legocState handlersIn This class, generalize the use of handlers: handleStop recorded as handler for a state change.
It would be also interesting to be able to register handlers on Instance. For example to listen to the termination of the instance.
That su...In This class, generalize the use of handlers: handleStop recorded as handler for a state change.
It would be also interesting to be able to register handlers on Instance. For example to listen to the termination of the instance.
That supposes to have callbacks.https://code.ill.fr/cameo/cameo/-/issues/11C++11 for the C++ API2020-10-13T14:52:19+02:00yannick legocC++11 for the C++ APIMigrate to C++11
* replace auto_ptr by unique_ptr
* use noncopyable
* C headers to be replaced: stdint.h, etc.Migrate to C++11
* replace auto_ptr by unique_ptr
* use noncopyable
* C headers to be replaced: stdint.h, etc.Python APIyannick legocyannick legochttps://code.ill.fr/cameo/cameo/-/issues/12Array transfer optimization2018-01-09T10:24:35+01:00yannick legocArray transfer optimizationOptimize by providing array optimization implementation by Xavier Pacalet.Optimize by providing array optimization implementation by Xavier Pacalet.https://code.ill.fr/cameo/cameo/-/issues/13Fixed publisher port2020-10-01T14:11:08+02:00yannick legocFixed publisher portIt can be interesting to fix the socket port for a publisher so that subscribers are still valid after the termination of the publisher e.g. after unintended crash.
Is it possible? How to ensure the port won't be used by a tier program?
...It can be interesting to fix the socket port for a publisher so that subscribers are still valid after the termination of the publisher e.g. after unintended crash.
Is it possible? How to ensure the port won't be used by a tier program?
We can add a flag:
```xml
<application ...>
<publisher name=""/>
```
Reserves fixed ports in case the application is single instance.https://code.ill.fr/cameo/cameo/-/issues/15Communication classes refactoring2020-10-01T14:13:30+02:00yannick legocCommunication classes refactoringPublisher and Subscribers can be implemented outside the static Application class (com package).
We have to extract the services from Application (and Impl) required to implement them as external (the idea is to have an example of how to...Publisher and Subscribers can be implemented outside the static Application class (com package).
We have to extract the services from Application (and Impl) required to implement them as external (the idea is to have an example of how to create a communication service).
So that the communication becomes extensible and other communication patterns can be implemented.
This requires to have access to the map of custom data in server.https://code.ill.fr/cameo/cameo/-/issues/19Refactor use of ZeroMQ2020-10-01T14:17:32+02:00yannick legocRefactor use of ZeroMQGather code: Socket calls.
Manage exceptions from ZeroMQ (ex: invalid host generates an exception).Gather code: Socket calls.
Manage exceptions from ZeroMQ (ex: invalid host generates an exception).https://code.ill.fr/cameo/cameo/-/issues/50Review the unique_ptr usage in C++ API2020-01-22T10:24:56+01:00yannick legocReview the unique_ptr usage in C++ APIHow objects are moved.How objects are moved.https://code.ill.fr/cameo/cameo/-/issues/51API improvements2020-10-01T14:54:35+02:00yannick legocAPI improvementsFollowing suggestions:
- Add getState in Instance.
- Add asynchronous callbacks for the states (C++ Instance must receive the states in a thread)Following suggestions:
- Add getState in Instance.
- Add asynchronous callbacks for the states (C++ Instance must receive the states in a thread)https://code.ill.fr/cameo/cameo/-/issues/8Implement the Python client API2021-03-25T11:19:48+01:00yannick legocImplement the Python client APILots of scientific users program with Python. Provide a client API can help the integration of the Python scientific software.
- [ ] update w.r.t. most up to date version of the C++ APILots of scientific users program with Python. Provide a client API can help the integration of the Python scientific software.
- [ ] update w.r.t. most up to date version of the C++ APIPython APIShervin NourbakhshShervin Nourbakhsh2020-10-09https://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/5Add/remove applications to the server with the client API2020-10-01T13:19:06+02:00yannick legocAdd/remove applications to the server with the client APIAdd functions/methods to the client API to update the server configuration.Add functions/methods to the client API to update the server configuration.https://code.ill.fr/cameo/cameo/-/issues/78Remove deprecated ZMQ methods from C++ API2022-01-20T16:45:20+01:00Shervin NourbakhshRemove deprecated ZMQ methods from C++ APIWhen compiling, I got several warnings about deprecated declarations using zmq methods.
```
./cameo/src/impl/SubscriberImpl.cpp:210:36: warning: ‘bool zmq::detail::socket_base::recv(zmq::message_t*, int)’ is deprecated: from 4.3.1, use ...When compiling, I got several warnings about deprecated declarations using zmq methods.
```
./cameo/src/impl/SubscriberImpl.cpp:210:36: warning: ‘bool zmq::detail::socket_base::recv(zmq::message_t*, int)’ is deprecated: from 4.3.1, use recv taking a reference to message_t and recv_flags [-Wdeprecated-declarations]
m_subscriber->recv(message.get());
^
In file included from /opt/panosc/cameo/src/impl/SocketWaitingImpl.h:23,
from /opt/panosc/cameo/src/impl/SubscriberImpl.h:20,
from /opt/panosc/cameo/src/impl/SubscriberImpl.cpp:17:
/usr/include/zmq.hpp:1267:10: note: declared here
bool recv(message_t *msg_, int flags_ = 0)
^~~~
```New version of APIshttps://code.ill.fr/cameo/cameo/-/issues/84Use of optional<>2021-12-16T15:52:19+01:00yannick legocUse of optional<>It is possible to use optional<> to simulate null values in C++.
This can help to avoid defining exceptions.
This can be the solution to undefined resources: key, app, exitCode, etc.It is possible to use optional<> to simulate null values in C++.
This can help to avoid defining exceptions.
This can be the solution to undefined resources: key, app, exitCode, etc.New version of APIshttps://code.ill.fr/cameo/cameo/-/issues/87Review event thread in API2022-01-18T15:46:38+01:00yannick legocReview event thread in APIImplement callback on state?
How to do it properly? record on the server event thread?
Do we block the event thread? simplest way to do it.Implement callback on state?
How to do it properly? record on the server event thread?
Do we block the event thread? simplest way to do it.New version of APIshttps://code.ill.fr/cameo/cameo/-/issues/89Define future C++ and Java API class names in Python API2021-03-25T11:18:46+01:00yannick legocDefine future C++ and Java API class names in Python APIAs Python API is not used yet, we can already define the future names, i.e. App instead of Instance.
We need to fix the names.As Python API is not used yet, we can already define the future names, i.e. App instead of Instance.
We need to fix the names.Python APIhttps://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/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.Misc