Skip to content

Commit f31d045

Browse files
committed
Fixes after review
1 parent 85ecdb7 commit f31d045

13 files changed

Lines changed: 63 additions & 56 deletions

File tree

MODULE.bazel

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -105,11 +105,6 @@ use_repo(toolchains_qnx, "toolchains_qnx_ifs")
105105

106106
bazel_dep(name = "score_baselibs_rust", version = "0.0.3")
107107
bazel_dep(name = "score_baselibs", version = "0.2.2")
108-
# git_override(
109-
# module_name = "score_baselibs",
110-
# commit = "9925dba1fd2ca7f2d33300cd2c01e6af022024cd",
111-
# remote = "https://github.com/eclipse-score/baselibs.git",
112-
# )
113108

114109
# Hedron's Compile Commands Extractor for Bazel
115110
# https://github.com/hedronvision/bazel-compile-commands-extractor
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
#!/bin/bash
22

3-
bazel run @hedron_compile_commands//:refresh_all
3+
bazel run @hedron_compile_commands//:refresh_all

src/health_monitoring_lib/BUILD

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,9 @@
1111
# SPDX-License-Identifier: Apache-2.0
1212
# *******************************************************************************
1313

14+
load("@rules_cc//cc:defs.bzl", "cc_library")
1415
load("@rules_rust//rust:defs.bzl", "rust_library", "rust_static_library", "rust_test")
15-
load("@score_baselibs//:bazel/unit_tests.bzl", "cc_gtest_unit_test", "cc_unit_test_suites_for_host_and_qnx")
16+
load("@score_baselibs//:bazel/unit_tests.bzl", "cc_gtest_unit_test")
1617

1718
rust_library(
1819
name = "health_monitoring_lib",
@@ -52,7 +53,7 @@ cc_library(
5253
name = "health_monitoring_lib_cc",
5354
srcs = [
5455
"cpp/common.cpp",
55-
"cpp/deadline/deadline_monitor.cpp",
56+
"cpp/deadline_monitor.cpp",
5657
"cpp/ffi_helpers.h",
5758
"cpp/health_monitor.cpp",
5859
],
@@ -61,9 +62,6 @@ cc_library(
6162
"cpp/include/score/hm/deadline/deadline_monitor.h",
6263
"cpp/include/score/hm/health_monitor.h",
6364
],
64-
copts = [
65-
"-Isrc/health_monitoring_lib/cpp", # private include path
66-
],
6765
strip_include_prefix = "cpp/include",
6866
visibility = ["//visibility:public"],
6967
deps = [

src/health_monitoring_lib/cpp/common.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,21 +45,21 @@ DroppableFFIHandle& DroppableFFIHandle::operator=(DroppableFFIHandle&& other) no
4545
return *this;
4646
}
4747

48-
::score::cpp::optional<FFIHandle> DroppableFFIHandle::as_rust_handle() const
48+
std::optional<FFIHandle> DroppableFFIHandle::as_rust_handle() const
4949
{
5050
if (handle_ == nullptr)
5151
{
52-
return ::score::cpp::nullopt;
52+
return std::nullopt;
5353
}
5454

5555
return handle_;
5656
}
5757

58-
::score::cpp::optional<FFIHandle> DroppableFFIHandle::drop_by_rust()
58+
std::optional<FFIHandle> DroppableFFIHandle::drop_by_rust()
5959
{
6060
if (handle_ == nullptr)
6161
{
62-
return ::score::cpp::nullopt;
62+
return std::nullopt;
6363
}
6464

6565
FFIHandle temp = handle_;

src/health_monitoring_lib/cpp/deadline/deadline_monitor.cpp renamed to src/health_monitoring_lib/cpp/deadline_monitor.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ DeadlineMonitorBuilder DeadlineMonitorBuilder::add_deadline(const IdentTag& tag,
4343
auto handle = monitor_builder_handler_.as_rust_handle();
4444
SCORE_LANGUAGE_FUTURECPP_PRECONDITION(handle.has_value());
4545

46-
deadline_monitor_builder_add_deadline(handle.value(), &tag, range.min_as_u32(), range.max_as_u32());
46+
deadline_monitor_builder_add_deadline(handle.value(), &tag, range.min_ms(), range.max_ms());
4747

4848
return std::move(*this);
4949
}
@@ -113,7 +113,7 @@ DeadlineHandle::DeadlineHandle(DeadlineHandle&& other)
113113
: was_stopped_(other.was_stopped_), deadline_(std::move(other.deadline_))
114114
{
115115
other.was_stopped_ = true;
116-
other.deadline_ = ::score::cpp::optional<std::reference_wrapper<Deadline>>{}; // None
116+
other.deadline_ = std::optional<std::reference_wrapper<Deadline>>{}; // None
117117
}
118118

119119
DeadlineHandle::~DeadlineHandle()

src/health_monitoring_lib/cpp/ffi_helpers.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
#ifndef SCORE_HM_FFI_HELPERS_HPP
1414
#define SCORE_HM_FFI_HELPERS_HPP
1515

16+
#include <cassert>
17+
1618
namespace score::hm::ffi
1719
{
1820

src/health_monitoring_lib/cpp/health_monitor.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,12 @@ HealthMonitor::HealthMonitor(internal::FFIHandle handle) : health_monitor_(handl
6161
// Initialize health monitor
6262
}
6363

64+
HealthMonitor::HealthMonitor(HealthMonitor&& other)
65+
{
66+
health_monitor_ = std::move(other.health_monitor_);
67+
other.health_monitor_ = nullptr;
68+
}
69+
6470
score::cpp::expected<deadline::DeadlineMonitor, Error> HealthMonitor::get_deadline_monitor(const IdentTag& tag)
6571
{
6672
auto maybe_monitor = health_monitor_get_deadline_monitor(health_monitor_, &tag);

src/health_monitoring_lib/cpp/include/score/hm/common.h

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,10 @@
1313
#ifndef SCORE_HM_COMMON_H
1414
#define SCORE_HM_COMMON_H
1515

16-
#include <score/optional.hpp>
17-
#include <cassert>
1816
#include <chrono>
1917
#include <cstdint>
20-
#include <cstring>
21-
#include <iostream>
18+
#include <optional>
19+
2220
namespace score::hm
2321
{
2422

@@ -57,21 +55,21 @@ class IdentTag
5755
class TimeRange
5856
{
5957
public:
60-
TimeRange(std::chrono::milliseconds min_ms, std::chrono::milliseconds max_ms) : min_ms(min_ms), max_ms(max_ms) {}
58+
TimeRange(std::chrono::milliseconds min_ms, std::chrono::milliseconds max_ms) : min_ms_(min_ms), max_ms_(max_ms) {}
6159

62-
const uint32_t min_as_u32() const
60+
const uint32_t min_ms() const
6361
{
64-
return min_ms.count();
62+
return min_ms_.count();
6563
}
6664

67-
const uint32_t max_as_u32() const
65+
const uint32_t max_ms() const
6866
{
69-
return max_ms.count();
67+
return max_ms_.count();
7068
}
7169

7270
private:
73-
const std::chrono::milliseconds min_ms;
74-
const std::chrono::milliseconds max_ms;
71+
const std::chrono::milliseconds min_ms_;
72+
const std::chrono::milliseconds max_ms_;
7573
};
7674

7775
/// FFI internal helpers
@@ -86,10 +84,11 @@ template <typename T>
8684
class RustDroppable
8785
{
8886
public:
89-
~RustDroppable() = default;
87+
virtual ~RustDroppable() = default;
9088

89+
protected:
9190
/// Marks object as no longer managed by C++ side, releasing handle to be passed to Rust side for dropping
92-
::score::cpp::optional<FFIHandle> drop_by_rust()
91+
std::optional<FFIHandle> drop_by_rust()
9392
{
9493
return static_cast<T*>(this)->__drop_by_rust_impl();
9594
}
@@ -110,12 +109,12 @@ class DroppableFFIHandle
110109
DroppableFFIHandle& operator=(DroppableFFIHandle&& other) noexcept;
111110

112111
/// Get the underlying FFI handle if it was not dropped before
113-
::score::cpp::optional<FFIHandle> as_rust_handle() const;
112+
std::optional<FFIHandle> as_rust_handle() const;
114113

115114
/// Marks object as no longer managed by C++ side, releasing handle to be passed to Rust side for dropping
116-
::score::cpp::optional<FFIHandle> drop_by_rust();
115+
std::optional<FFIHandle> drop_by_rust();
117116

118-
~DroppableFFIHandle();
117+
virtual ~DroppableFFIHandle();
119118

120119
private:
121120
FFIHandle handle_;

src/health_monitoring_lib/cpp/include/score/hm/deadline/deadline_monitor.h

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,13 @@
1515

1616
#include <score/expected.hpp>
1717
#include <score/hm/common.h>
18+
#include <functional>
1819

1920
namespace score::hm
2021
{
2122
// Forward declaration
2223
class HealthMonitor;
24+
class HealthMonitorBuilder;
2325
} // namespace score::hm
2426

2527
namespace score::hm::deadline
@@ -31,7 +33,7 @@ class DeadlineHandle;
3133
class Deadline;
3234

3335
/// DeadlineMonitorBuilder for constructing DeadlineMonitor instance
34-
class DeadlineMonitorBuilder : public internal::RustDroppable<DeadlineMonitorBuilder>
36+
class DeadlineMonitorBuilder final : public internal::RustDroppable<DeadlineMonitorBuilder>
3537
{
3638
public:
3739
/// Creates a new DeadlineMonitorBuilder
@@ -46,16 +48,23 @@ class DeadlineMonitorBuilder : public internal::RustDroppable<DeadlineMonitorBui
4648
/// Adds a deadline with the given tag and duration range to the monitor.
4749
DeadlineMonitorBuilder add_deadline(const IdentTag& tag, const TimeRange& range) &&;
4850

49-
::score::cpp::optional<internal::FFIHandle> __drop_by_rust_impl()
51+
protected:
52+
std::optional<internal::FFIHandle> __drop_by_rust_impl()
5053
{
5154
return monitor_builder_handler_.drop_by_rust();
5255
}
5356

5457
private:
5558
internal::DroppableFFIHandle monitor_builder_handler_;
59+
60+
// Allow to hide drop_by_rust implementation
61+
friend class internal::RustDroppable<DeadlineMonitorBuilder>;
62+
63+
// Allow HealthMonitorBuilder to access drop_by_rust implementation
64+
friend class ::score::hm::HealthMonitorBuilder;
5665
};
5766

58-
class DeadlineMonitor
67+
class DeadlineMonitor final
5968
{
6069
public:
6170
// Delete copy, allow move
@@ -70,12 +79,13 @@ class DeadlineMonitor
7079
private:
7180
explicit DeadlineMonitor(internal::FFIHandle handle);
7281

82+
// Allow only HealthMonitor to create DeadlineMonitor instances.
7383
friend class score::hm::HealthMonitor;
7484
internal::DroppableFFIHandle monitor_handle_;
7585
};
7686

7787
/// Deadline instance representing a specific deadline to be monitored.
78-
class Deadline
88+
class Deadline final
7989
{
8090
public:
8191
~Deadline();
@@ -93,14 +103,17 @@ class Deadline
93103
private:
94104
explicit Deadline(internal::FFIHandle handle);
95105

106+
// Allow only DeadlineMonitor to create Deadline instances.
96107
friend class DeadlineMonitor;
108+
109+
// Allow DeadlineHandle to access internal members as its wrapper type only
97110
friend class DeadlineHandle;
98111
internal::DroppableFFIHandle deadline_handle_;
99112
bool has_handle_;
100113
};
101114

102115
/// Deadline guard to manage the lifetime of a started deadline.
103-
class DeadlineHandle
116+
class DeadlineHandle final
104117
{
105118
public:
106119
/// Stops the deadline monitoring.
@@ -118,9 +131,10 @@ class DeadlineHandle
118131
private:
119132
DeadlineHandle(Deadline& deadline);
120133

134+
// Allow only Deadline to create DeadlineHandle instances.
121135
friend class Deadline;
122136
bool was_stopped_;
123-
::score::cpp::optional<std::reference_wrapper<Deadline>> deadline_;
137+
std::optional<std::reference_wrapper<Deadline>> deadline_;
124138
};
125139

126140
} // namespace score::hm::deadline

src/health_monitoring_lib/cpp/include/score/hm/health_monitor.h

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ class HealthMonitor;
2424
///
2525
/// Builder for HealthMonitor instances.
2626
///
27-
class HealthMonitorBuilder
27+
class HealthMonitorBuilder final
2828
{
2929
public:
3030
/// Creates a new HealthMonitorBuilder
@@ -47,24 +47,21 @@ class HealthMonitorBuilder
4747
internal::DroppableFFIHandle health_monitor_builder_handle_;
4848
};
4949

50-
class HealthMonitor
50+
class HealthMonitor final
5151
{
5252
public:
5353
HealthMonitor(const HealthMonitor&) = delete;
5454
HealthMonitor& operator=(const HealthMonitor&) = delete;
55-
HealthMonitor(HealthMonitor&& other)
56-
{
57-
health_monitor_ = std::move(other.health_monitor_);
58-
other.health_monitor_ = nullptr;
59-
}
6055

56+
HealthMonitor(HealthMonitor&& other);
6157
HealthMonitor& operator=(HealthMonitor&&);
6258

6359
~HealthMonitor();
6460

6561
score::cpp::expected<deadline::DeadlineMonitor, Error> get_deadline_monitor(const IdentTag& tag);
6662

6763
private:
64+
// Allow only the builder to create HealthMonitor instances.
6865
friend class HealthMonitorBuilder;
6966

7067
HealthMonitor(internal::FFIHandle handle);

0 commit comments

Comments
 (0)