Maestro Core documentation

Maestro Core is a C library that does multi-threaded cross-application data transfer and inspection over high-speed interconnect, using lightweight data wrappers named CDOs that include user metadata.

A producer application using Maestro Core may offer data and metadata

mstro_init("my_workflow", "component_A", ...);
mstro_cdo src_handle;
mstro_cdo_declare(src_handle, "my_cdo_name");
mstro_cdo_attribute_set(src_handle,
                        MSTRO_ATTR_CORE_CDO_RAW_PTR,
                        src_data, ...);
mstro_cdo_attribute_set(src_handle,
                        MSTRO_ATTR_CORE_CDO_SCOPE_LOCAL_SIZE,
                        &size, ...);
mstro_cdo_attribute_set(src_handle,
                        ".maestro.my-namespace.my-key",
                        &value, ...);
mstro_cdo_offer(src_handle);

Which a consumer application may demand

mstro_init("my_workflow", "component_B", ...);
mstro_cdo dst_handle;
mstro_cdo_declare(dst_handle, "my_cdo_name");
mstro_cdo_require(dst_handle);
mstro_cdo_demand(dst_handle);

When mstro_cdo_demand() returns, the data and metadata has been transferred by Maestro Core from the producer and is locally available for the consumer.

CDOs are central to the Maestro Core design.

Maestro Core is part of the Maestro framework, which aims at data-driven workflow orchestration.

That’s it for the introduction.