activity_sdk_one_shot_abi.h 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #pragma once
  2. #include <cstddef>
  3. #include <cstdint>
  4. namespace sunrise::client::content::activity::sdk_generation::one_shot::abi {
  5. // Progress and result records carry this ABI version.
  6. inline constexpr std::uint32_t kVersion = 1;
  7. // Digests are SHA-256, so 32 bytes.
  8. inline constexpr std::size_t kDigestSize = 32;
  9. struct Progress final {
  10. std::uint32_t abiVersion{kVersion};
  11. std::uint32_t status{};
  12. std::uint32_t current{};
  13. std::uint32_t total{};
  14. std::uint32_t scenarioTag{};
  15. const char* detail{};
  16. std::uint32_t detailLength{};
  17. };
  18. /** Fixed result block one offline build writes back across the ABI boundary. */
  19. struct Result final {
  20. std::uint32_t abiVersion{kVersion};
  21. std::uint32_t status{};
  22. std::uint32_t scenarioCount{};
  23. std::uint32_t activityRootCount{};
  24. std::uint32_t activityCount{};
  25. std::uint32_t builtScenarioCount{};
  26. std::uint32_t reusedScenarioCount{};
  27. std::uint32_t luaFileCount{};
  28. std::uint64_t packBytes{};
  29. std::uint8_t payloadSha256[kDigestSize]{};
  30. };
  31. using CancelProbe = bool (*)(void* context) noexcept;
  32. using ProgressSink = void (*)(void* context, const Progress* progress) noexcept;
  33. using GenerateFunction = std::uint32_t (*)(const wchar_t* packageDirectory,
  34. const wchar_t* cacheArtifactDirectory,
  35. const wchar_t* outputArtifactDirectory,
  36. CancelProbe cancel,
  37. void* cancelContext,
  38. ProgressSink progress,
  39. void* progressContext,
  40. Result* output) noexcept;
  41. using AcceptGeneratedFunction = std::uint32_t (*)(const wchar_t* artifactDirectory,
  42. const std::uint8_t* sourceFingerprint,
  43. std::uint32_t sourceFingerprintSize,
  44. CancelProbe cancel,
  45. void* cancelContext,
  46. Result* output) noexcept;
  47. using PublishGeneratedFunction = std::uint32_t (*)(const wchar_t* stageArtifactDirectory,
  48. const wchar_t* outputArtifactDirectory,
  49. const std::uint8_t* sourceFingerprint,
  50. std::uint32_t sourceFingerprintSize,
  51. CancelProbe cancel,
  52. void* cancelContext,
  53. Result* output) noexcept;
  54. } // namespace sunrise::client::content::activity::sdk_generation::one_shot::abi