summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWilliam A. Kennington III <wak@google.com>2018-07-23 18:33:04 -0700
committerWilliam A. Kennington III <wak@google.com>2018-07-23 18:33:04 -0700
commit8fd0cd4c83a68940cc0a06c5007415c329af19bd (patch)
tree634d6d9d132a953a5a5462b7a6f261e0cfb2a9a3
parent3c845caaf8921c85878df7ffab92fb9a08737bbb (diff)
downloadsdeventplus-8fd0cd4c83a68940cc0a06c5007415c329af19bd.tar.gz
sdeventplus-8fd0cd4c83a68940cc0a06c5007415c329af19bd.zip
source/base: Improve some method types
-rw-r--r--example/heartbeat.cpp2
-rw-r--r--src/sdeventplus/source/base.cpp16
-rw-r--r--src/sdeventplus/source/base.hpp17
-rw-r--r--test/source/base.cpp13
4 files changed, 30 insertions, 18 deletions
diff --git a/example/heartbeat.cpp b/example/heartbeat.cpp
index e45ae89..1840f60 100644
--- a/example/heartbeat.cpp
+++ b/example/heartbeat.cpp
@@ -30,6 +30,6 @@ int main(int argc, char* argv[])
};
Time<ClockId::RealTime> time(event, Clock<ClockId::RealTime>(event).now(),
std::chrono::seconds{1}, std::move(hbFunc));
- time.set_enabled(SD_EVENT_ON);
+ time.set_enabled(sdeventplus::source::Enabled::On);
return event.loop();
}
diff --git a/src/sdeventplus/source/base.cpp b/src/sdeventplus/source/base.cpp
index d63a03e..9915132 100644
--- a/src/sdeventplus/source/base.cpp
+++ b/src/sdeventplus/source/base.cpp
@@ -14,7 +14,7 @@ Base::~Base()
{
if (source)
{
- set_enabled(SD_EVENT_OFF);
+ set_enabled(Enabled::Off);
}
}
@@ -67,7 +67,7 @@ const Base::Callback& Base::get_prepare() const
return prepare;
}
-int Base::get_pending() const
+bool Base::get_pending() const
{
int r = event.getSdEvent()->sd_event_source_get_pending(source.get());
if (r < 0)
@@ -99,7 +99,7 @@ void Base::set_priority(int64_t priority) const
}
}
-int Base::get_enabled() const
+Enabled Base::get_enabled() const
{
int enabled;
int r =
@@ -108,13 +108,13 @@ int Base::get_enabled() const
{
throw SdEventError(-r, "sd_event_source_get_enabled");
}
- return enabled;
+ return static_cast<Enabled>(enabled);
}
-void Base::set_enabled(int enabled) const
+void Base::set_enabled(Enabled enabled) const
{
- int r =
- event.getSdEvent()->sd_event_source_set_enabled(source.get(), enabled);
+ int r = event.getSdEvent()->sd_event_source_set_enabled(
+ source.get(), static_cast<int>(enabled));
if (r < 0)
{
throw SdEventError(-r, "sd_event_source_set_enabled");
@@ -152,7 +152,7 @@ Base& Base::operator=(Base&& other)
// after it gets deleted in the move
if (source)
{
- set_enabled(SD_EVENT_OFF);
+ set_enabled(Enabled::Off);
}
event = std::move(other.event);
diff --git a/src/sdeventplus/source/base.hpp b/src/sdeventplus/source/base.hpp
index 5a5d12b..dd2a715 100644
--- a/src/sdeventplus/source/base.hpp
+++ b/src/sdeventplus/source/base.hpp
@@ -15,6 +15,17 @@ namespace sdeventplus
namespace source
{
+/** @class Enabled
+ * @brief Mapping of sdeventplus source enable values to the sd-event
+ * equivalent
+ */
+enum class Enabled
+{
+ Off = SD_EVENT_OFF,
+ On = SD_EVENT_ON,
+ OneShot = SD_EVENT_ONESHOT,
+};
+
/** @class Base
* @brief The base class for all sources implementing common source methods
* Not instantiated directly by end users
@@ -67,7 +78,7 @@ class Base
* @return 'true' if the source has pending events
* 'false' otherwise
*/
- int get_pending() const;
+ bool get_pending() const;
/** @brief Gets the priority of the source relative to other sources
* The lower the priority the more important the source
@@ -90,14 +101,14 @@ class Base
* @throws SdEventError for underlying sd_event errors
* @return The enabled status of the source
*/
- int get_enabled() const;
+ Enabled get_enabled() const;
/** @brief Sets the enablement value of the source
*
* @param[in] enabled - The new state of the source
* @throws SdEventError for underlying sd_event errors
*/
- void set_enabled(int enabled) const;
+ void set_enabled(Enabled enabled) const;
protected:
Event event;
diff --git a/test/source/base.cpp b/test/source/base.cpp
index bc0eec0..df855c1 100644
--- a/test/source/base.cpp
+++ b/test/source/base.cpp
@@ -355,10 +355,10 @@ TEST_F(BaseMethodTest, GetPendingSuccess)
{
EXPECT_CALL(mock, sd_event_source_get_pending(expected_source))
.WillOnce(Return(0));
- EXPECT_EQ(0, base->get_pending());
+ EXPECT_FALSE(base->get_pending());
EXPECT_CALL(mock, sd_event_source_get_pending(expected_source))
.WillOnce(Return(4));
- EXPECT_EQ(4, base->get_pending());
+ EXPECT_TRUE(base->get_pending());
}
TEST_F(BaseMethodTest, GetPendingError)
@@ -400,7 +400,7 @@ TEST_F(BaseMethodTest, GetEnabledSuccess)
{
EXPECT_CALL(mock, sd_event_source_get_enabled(expected_source, testing::_))
.WillOnce(DoAll(SetArgPointee<1>(SD_EVENT_ON), Return(0)));
- EXPECT_EQ(SD_EVENT_ON, base->get_enabled());
+ EXPECT_EQ(Enabled::On, base->get_enabled());
}
TEST_F(BaseMethodTest, GetEnabledError)
@@ -414,14 +414,15 @@ TEST_F(BaseMethodTest, SetEnabledSuccess)
{
EXPECT_CALL(mock, sd_event_source_set_enabled(expected_source, SD_EVENT_ON))
.WillOnce(Return(0));
- base->set_enabled(SD_EVENT_ON);
+ base->set_enabled(Enabled::On);
}
TEST_F(BaseMethodTest, SetEnabledError)
{
- EXPECT_CALL(mock, sd_event_source_set_enabled(expected_source, SD_EVENT_ON))
+ EXPECT_CALL(mock,
+ sd_event_source_set_enabled(expected_source, SD_EVENT_ONESHOT))
.WillOnce(Return(-EINVAL));
- EXPECT_THROW(base->set_enabled(SD_EVENT_ON), SdEventError);
+ EXPECT_THROW(base->set_enabled(Enabled::OneShot), SdEventError);
}
} // namespace
OpenPOWER on IntegriCloud