ores.ore.api

Table of Contents

1. Diagram

ores.ore.api component diagram

Figure 1: ores.ore.api

2. Summary

ores.ore.api is the shared contract of the component. It carries the protocols for importing an ORE directory, for the saga steps the engine drives, and for locating the import tarball in object storage; and the workflow registration the ORE import runs under.

Its compiled body is the generated wire codec of each protocol, so a caller encodes and decodes the ORE messages without compiling the encoder itself.

3. Inputs

  • Protocol requests for the ORE import, and workflow definitions the engine registers at startup.

4. Outputs

  • The import, saga-step and storage protocol schemas consumed by ores.ore.service and the shell.

5. Entry points

  • include/ores.ore.api/messaging/ — the import and saga-step protocols.
  • include/ores.ore.api/net/ — the import tarball bucket and key helpers.
  • include/ores.ore.api/workflow/ — the ORE import workflow registration.

6. Dependencies

  • ores.platform, ores.storage, ores.logging, ores.workflow.api, ores.eventing.api and ores.utility — linked publicly, because the headers name them, so consumers inherit them.

ores.storage is public because the import target helpers name a bucket, so every consumer of this part inherits the object-storage client.

7. Build dependencies

What the shared profile cannot know, declared here rather than hand-edited into the generated build file. Each block is spliced into its generated file after the profile's baseline.

8. See also

9. Test dependencies

The suites link what the profile cannot know about.

target_link_libraries(${lib_target_name}
    PUBLIC
        ores.platform.lib
        ores.storage.api.lib
        ores.logging.lib
        ores.workflow.api.lib
        ores.eventing.api.lib
        ores.utility.lib)
target_link_libraries(${tests_target_name}
    PRIVATE
        ${lib_target_name}
        ores.utility.lib
        ores.testing.lib
        ores.logging.lib
        Catch2::Catch2
        Threads::Threads)

Emacs 29.3 (Org mode 9.6.15)