Skip to content

nasa/Multi-Process-Proxy-Client

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

proxy_client

The Multi-Process Proxy software allows cFS to run applications as separate OS processes on Linux platforms. Using separate processes provides memory isolation, which prevents errors in cFS applications from propagating to other cFS applications or the core cFS services.

Multiple process support is implemented using a lightweight cFS application (the Proxy) and a Proxy Client library to provide access to cFS function calls to outside processes without requiring direct modifications to cFS. The Proxy executes within the cFS memory space as a thread and provides a remote interface for calling cFS functions. The Proxy Client library allows applications to access the Proxy interface from a different memory space/process as cFS.

This library is the "Proxy Client" and provides the process application access to the core cFS services (with exception of SB). It communicates with the cFS application Proxy. The following additional components are also required:

  • The Software Bus Network and Software Bus Network Client provide access to the cFS Software Bus
  • Proxy EVS is a simple cFS application that allows the Proxy to send EVS messages before the application has registered with EVS
  • cFS should be linked by the new application as a library to provide direct access to side-effect free functions (such as SB_InitMsg)

this is not a cFS library; it is used by the process application

this is also the home of the interface definitions (see flat_inc, wrap and interface)

cFS functions that manipulate or depend on shared state should be called through the stubs available in this library. These function calls are wrapped using the LD option --wrap=symbol. This library handles serializing the function arguments and sending the data to the corresponding proxy application, which will make the function call on behalf of the process application.

Configuration

Configuration is done via proxy_client_defs.h, which currently only has the address for the ipc pipe. The address is relative to the applications launch directory, such as cf/apps/, and needs to match that used by the Proxy.

Python Interface

The library produced (proxy_client.so) may be called by python applications through python's c interface. See the files in fsw/python_interface for an example and python_client.py.

Dependencies

Requires the NNG library.

Requires the FlatBuffers library. The files in flat_inc are generated by flatcc from the files in the interface directory.

./bin/flatcc -a ../cfs_mps/apps/proxy_client/interface/cfs_* -o ./flat_inc/

License and Copyright

Please refer to NOSA GSC-18364-1.pdf and COPYRIGHT.

Contributions

Please open an issue if you find any problems. We are a small team, but will try to respond in a timely fashion.

If you would like to contribute code, GREAT! First you will need to complete the Individual Contributor License Agreement (pdf) and email it to gsfc-softwarerequest@mail.nasa.gov with james.marshall-1@nasa.gov CCed.

Next, please create an issue for the fix or feature and note that you intend to work on it. Fork the repository and create a branch with a name that starts with the issue number. Once done, submit your pull request and we'll take a look. You may want to make draft pull requests to solicit feedback on larger changes.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published