#amqp #worker #microservices #mcai #process #sdk #traits

bin+lib c_mcai_worker_sdk

AMQP Worker to listen and provide trait to process message

5 releases

1.0.0-rc1 Feb 10, 2021
1.0.0-alpha6 Feb 9, 2021
1.0.0-alpha5 Feb 5, 2021
0.11.11 Jan 28, 2021
0.11.10 Nov 3, 2020

#1269 in Asynchronous

MIT license

54KB
1.5K SLoC

Rust 1K SLoC // 0.0% comments C++ 200 SLoC // 0.3% comments

C/C++ binding for Rust AMQP Worker

Based on rs_amqp_worker.

Build Status Coverage Status

Build

To build the rust application

cargo build

To build the provided worker example

gcc -c -Wall -Werror -fpic worker.cpp
gcc -shared -o libworker.so worker.o

Test

To run the unit tests, you must build the provided worker example (see the Build section above).

cargo test

Usage

This worker uses Rust FFI to load a C/C++ Shared Object library, and to execute it. The C/C++ worker must implement some functions to be correctly bound:

  • char* get_name(): to retrieve the worker name
  • char* get_short_description(): to retrieve a short description of the worker
  • char* get_description(): to describe the worker purpose
  • char* get_version(): to retrieve the worker version
  • unsigned int get_parameters_size(): to return the number of parameter, before calling...
  • void get_parameters(Parameter*) : to fill the allocated pointer with the worker parameters
  • int process(void*, char* (*)(void*, const char*), void* ()(void*, unsigned char), void* (*)(const char*, const char*), const char**, const char***): to execute the worker process

For more details, see the provided worker.cpp example.

Set the WORKER_LIBRARY_FILE environment variable to specify the path of your C/C++ worker shared-library. Otherwise, the libworker.so file will be loaded by default.

Dependencies

~23–40MB
~658K SLoC