diff options
| author | William A. Kennington III <wak@google.com> | 2018-07-17 14:40:14 -0700 |
|---|---|---|
| committer | William A. Kennington III <wak@google.com> | 2018-07-17 14:40:14 -0700 |
| commit | 715c72f8b9c45edc27fa2a4b0f3d5f2b0e0eefec (patch) | |
| tree | 37e97535c20ad6c0d679bf8add20e93ee7976d80 /src | |
| parent | d9fd9815705be7501600fff2b14ba9a282a75ff2 (diff) | |
| download | sdeventplus-715c72f8b9c45edc27fa2a4b0f3d5f2b0e0eefec.tar.gz sdeventplus-715c72f8b9c45edc27fa2a4b0f3d5f2b0e0eefec.zip | |
source/base: Take an event directly instead of sdevent
Also expose a mechanism for retrieving our internal event.
Diffstat (limited to 'src')
| -rw-r--r-- | src/sdeventplus/source/base.cpp | 45 | ||||
| -rw-r--r-- | src/sdeventplus/source/base.hpp | 12 |
2 files changed, 33 insertions, 24 deletions
diff --git a/src/sdeventplus/source/base.cpp b/src/sdeventplus/source/base.cpp index 78ae406..cab2c7a 100644 --- a/src/sdeventplus/source/base.cpp +++ b/src/sdeventplus/source/base.cpp @@ -42,11 +42,16 @@ int Base::prepareCallback() } } +const Event& Base::get_event() const +{ + return event; +} + const char* Base::get_description() const { const char* description; - int r = - sdevent->sd_event_source_get_description(source.get(), &description); + int r = event.getSdEvent()->sd_event_source_get_description(source.get(), + &description); if (r < 0) { throw SdEventError(-r, "sd_event_source_get_description"); @@ -56,7 +61,8 @@ const char* Base::get_description() const void Base::set_description(const char* description) const { - int r = sdevent->sd_event_source_set_description(source.get(), description); + int r = event.getSdEvent()->sd_event_source_set_description(source.get(), + description); if (r < 0) { throw SdEventError(-r, "sd_event_source_set_description"); @@ -75,7 +81,7 @@ static int prepare_callback(sd_event_source*, void* userdata) void Base::set_prepare(Callback&& callback) { - int r = sdevent->sd_event_source_set_prepare( + int r = event.getSdEvent()->sd_event_source_set_prepare( source.get(), callback ? prepare_callback : nullptr); if (r < 0) { @@ -87,7 +93,7 @@ void Base::set_prepare(Callback&& callback) int Base::get_pending() const { - int r = sdevent->sd_event_source_get_pending(source.get()); + int r = event.getSdEvent()->sd_event_source_get_pending(source.get()); if (r < 0) { throw SdEventError(-r, "sd_event_source_get_pending"); @@ -98,7 +104,8 @@ int Base::get_pending() const int64_t Base::get_priority() const { int64_t priority; - int r = sdevent->sd_event_source_get_priority(source.get(), &priority); + int r = event.getSdEvent()->sd_event_source_get_priority(source.get(), + &priority); if (r < 0) { throw SdEventError(-r, "sd_event_source_get_priority"); @@ -108,7 +115,8 @@ int64_t Base::get_priority() const void Base::set_priority(int64_t priority) const { - int r = sdevent->sd_event_source_set_priority(source.get(), priority); + int r = event.getSdEvent()->sd_event_source_set_priority(source.get(), + priority); if (r < 0) { throw SdEventError(-r, "sd_event_source_set_priority"); @@ -118,7 +126,8 @@ void Base::set_priority(int64_t priority) const int Base::get_enabled() const { int enabled; - int r = sdevent->sd_event_source_get_enabled(source.get(), &enabled); + int r = + event.getSdEvent()->sd_event_source_get_enabled(source.get(), &enabled); if (r < 0) { throw SdEventError(-r, "sd_event_source_get_enabled"); @@ -128,25 +137,25 @@ int Base::get_enabled() const void Base::set_enabled(int enabled) const { - int r = sdevent->sd_event_source_set_enabled(source.get(), enabled); + int r = + event.getSdEvent()->sd_event_source_set_enabled(source.get(), enabled); if (r < 0) { throw SdEventError(-r, "sd_event_source_set_enabled"); } } -Base::Base(sd_event_source* source, internal::SdEvent* sdevent) : - sdevent(sdevent), source(source, &internal::SdEvent::sd_event_source_ref, - &internal::SdEvent::sd_event_source_unref, sdevent) +Base::Base(const Event& event, sd_event_source* source) : + event(event), + source(source, &internal::SdEvent::sd_event_source_ref, + &internal::SdEvent::sd_event_source_unref, event.getSdEvent()) { } -Base::Base(sd_event_source* source, std::false_type, - internal::SdEvent* sdevent) : - sdevent(sdevent), - source(source, &internal::SdEvent::sd_event_source_ref, - &internal::SdEvent::sd_event_source_unref, std::false_type(), - sdevent) +Base::Base(const Event& event, sd_event_source* source, std::false_type) : + event(event), source(source, &internal::SdEvent::sd_event_source_ref, + &internal::SdEvent::sd_event_source_unref, + std::false_type(), event.getSdEvent()) { } diff --git a/src/sdeventplus/source/base.hpp b/src/sdeventplus/source/base.hpp index 3b237db..f8db620 100644 --- a/src/sdeventplus/source/base.hpp +++ b/src/sdeventplus/source/base.hpp @@ -2,7 +2,7 @@ #include <cstdint> #include <functional> -#include <sdeventplus/internal/sdevent.hpp> +#include <sdeventplus/event.hpp> #include <sdeventplus/internal/sdref.hpp> #include <systemd/sd-bus.h> #include <type_traits> @@ -27,6 +27,8 @@ class Base int prepareCallback(); + const Event& get_event() const; + const char* get_description() const; void set_description(const char* description) const; void set_prepare(Callback&& callback); @@ -37,14 +39,12 @@ class Base void set_enabled(int enabled) const; protected: - const internal::SdEvent* const sdevent; + const Event event; const internal::SdRef<sd_event_source> source; // Base sources cannot be directly constructed. - Base(sd_event_source* source, - internal::SdEvent* sdevent = &internal::sdevent_impl); - Base(sd_event_source* source, std::false_type, - internal::SdEvent* sdevent = &internal::sdevent_impl); + Base(const Event& event, sd_event_source* source); + Base(const Event& event, sd_event_source* source, std::false_type); private: Callback prepare; |

