Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use C++ classes as base #30

Open
18 tasks
langmm opened this issue Aug 24, 2018 · 0 comments
Open
18 tasks

Use C++ classes as base #30

langmm opened this issue Aug 24, 2018 · 0 comments
Assignees

Comments

@langmm
Copy link
Member

langmm commented Aug 24, 2018

Create C++ classes replicating major methods except serialization (#72) with Python wrappers (Python API preferred or Cython)

Communicator (Comm) Classes (in order of priority)

  • Base
  • ZMQ using zeromq C++ library directly (previously used czmq which has added complexity to installation)
  • Async class (can use any base class, but messages are queued and sent/received asynchronously using threads)
  • IPC class using sysv queues (lower priority)
  • RMQ class (lowest priority)

Methods

  • Constructors/destructors that check for address information in environment variables and manage underlying resources for the base class communication (e.g. queues)
  • Send/Receive small string messages
  • Send/Receive large string messages by breaking up the message and sending the pieces to a temporary comm identified by header information sent to the recipient
  • Open comm, opening connections and altering state that can be checked via method
  • Close comm, closing connections and altering state that can be checked via method
  • Methods for checking if messages are available for receipt or if messages have not been received
  • (AFTER Move serialization into C #72 COMPLET) Send/Receive non-string messages

Additional requirements

  • Tests for C++ classes
  • CI for C++ tests
  • Python wrapper classes serve as drop in replacements for the existing Python comm classes and pass interface & connection driver tests (parts of existing comm tests may be modified where they touch non-stable API).
  • C wrapper
  • Fortran wrapper using ISO_C_BINDING
  • (MAYBE) R/Matlab wrapper directly wrapping C++ instead of Python?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants