Welcome to Maestro Core’s documentation!

Maestro Core is a C library that does multi-threaded cross-application data transfer 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 Maestro Core design.

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

That’s it for the introduction.