ores.marketdata.api

Table of Contents

1. Diagram

ores.marketdata.api component diagram

Figure 1: ores.marketdata.api

2. Summary

ores.marketdata.api is a header-only library defining the shared contract for the market-data domain. It provides domain types for market series, observations, fixings, and import options, with JSON and table I/O via generated codecs, and the NATS protocol schemas consumed by ores.marketdata.core and UI clients.

3. Inputs

  • Domain entity type definitions across domain/ headers.

4. Outputs

  • C++ headers for market-data types with JSON and table I/O.
  • NATS protocol headers for market-data operations.

5. Entry points

  • include/ores.marketdata.api/domain/, include/ores.marketdata.api/messaging/.

6. Dependencies

  • fort.

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.

The URI codec reads and writes an address with boost::urls, so the two sources that parse one need it.

ores.refdata.api is public because convention_lookup hands out the convention types, so a caller that reads the answer compiles against them. ores.logging is private: the projection logs the reason it cannot name a stored reference, and no header states a logger.

8. See also

9. Test dependencies

The suites link what the profile cannot know about.

find_package(Boost REQUIRED COMPONENTS url)

target_link_libraries(${lib_target_name}
    PUBLIC
        ores.platform.lib
        ores.refdata.api.lib
    PRIVATE
        ores.utility.lib
        ores.logging.lib
        faker-cxx::faker-cxx
        libfort::fort
        Boost::url)

target_link_libraries(${lib_target_name} PRIVATE ores.codec.pch)
target_link_libraries(${tests_target_name}
    PRIVATE
        ores.marketdata.api.lib
        ores.telemetry.core.lib
        ores.utility.lib
        ores.testing.lib
        faker-cxx::faker-cxx
        Catch2::Catch2
        ores.openssl_cleanup
        Threads::Threads)

Emacs 29.3 (Org mode 9.6.15)