summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWilliam A. Kennington III <wak@google.com>2019-03-22 19:25:55 -0700
committerWilliam A. Kennington III <wak@google.com>2019-04-26 18:26:02 -0700
commite19c3cf6493d068d600db959de44a00a8097bbf5 (patch)
treeae64d568971e3f4616bfa1f9099db354f6181dc4
parent594e5a852d9bb25012848a2f6d78bd5e9bba22fc (diff)
downloadsdeventplus-e19c3cf6493d068d600db959de44a00a8097bbf5.tar.gz
sdeventplus-e19c3cf6493d068d600db959de44a00a8097bbf5.zip
sdevent: Support source destroy callbacks
Will be needed to support heap allocated userdata and floating sources. Change-Id: I927acb3e03fb6c724e762b3ac47cd0d4d297ef87 Signed-off-by: William A. Kennington III <wak@google.com>
-rw-r--r--src/meson.build2
-rw-r--r--src/sdeventplus/internal/sdevent.cpp12
-rw-r--r--src/sdeventplus/internal/sdevent.hpp8
-rw-r--r--src/sdeventplus/test/sdevent.hpp4
4 files changed, 25 insertions, 1 deletions
diff --git a/src/meson.build b/src/meson.build
index 7cd2e92..cb076f5 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -1,5 +1,5 @@
sdeventplus_deps = [
- dependency('libsystemd'),
+ dependency('libsystemd', version: '>=239'),
dependency('stdplus'),
]
diff --git a/src/sdeventplus/internal/sdevent.cpp b/src/sdeventplus/internal/sdevent.cpp
index ece6b50..26b2f80 100644
--- a/src/sdeventplus/internal/sdevent.cpp
+++ b/src/sdeventplus/internal/sdevent.cpp
@@ -249,6 +249,18 @@ int SdEventImpl::sd_event_source_get_child_pid(sd_event_source* source,
return ::sd_event_source_get_child_pid(source, pid);
}
+int SdEventImpl::sd_event_source_set_destroy_callback(
+ sd_event_source* source, sd_event_destroy_t callback) const
+{
+ return ::sd_event_source_set_destroy_callback(source, callback);
+}
+
+int SdEventImpl::sd_event_source_get_destroy_callback(
+ sd_event_source* source, sd_event_destroy_t* callback) const
+{
+ return ::sd_event_source_get_destroy_callback(source, callback);
+}
+
SdEventImpl sdevent_impl;
} // namespace internal
diff --git a/src/sdeventplus/internal/sdevent.hpp b/src/sdeventplus/internal/sdevent.hpp
index e69b2fd..46486f7 100644
--- a/src/sdeventplus/internal/sdevent.hpp
+++ b/src/sdeventplus/internal/sdevent.hpp
@@ -107,6 +107,10 @@ class SdEvent
virtual int sd_event_source_get_signal(sd_event_source* source) const = 0;
virtual int sd_event_source_get_child_pid(sd_event_source* source,
pid_t* pid) const = 0;
+ virtual int sd_event_source_set_destroy_callback(
+ sd_event_source* source, sd_event_destroy_t callback) const = 0;
+ virtual int sd_event_source_get_destroy_callback(
+ sd_event_source* source, sd_event_destroy_t* callback) const = 0;
};
/** @class SdEventImpl
@@ -212,6 +216,10 @@ class SdEventImpl : public SdEvent
int sd_event_source_get_signal(sd_event_source* source) const override;
int sd_event_source_get_child_pid(sd_event_source* source,
pid_t* pid) const override;
+ int sd_event_source_set_destroy_callback(
+ sd_event_source* source, sd_event_destroy_t callback) const override;
+ int sd_event_source_get_destroy_callback(
+ sd_event_source* source, sd_event_destroy_t* callback) const override;
};
/** @brief Default instantiation of sd_event
diff --git a/src/sdeventplus/test/sdevent.hpp b/src/sdeventplus/test/sdevent.hpp
index 6e78169..818c85d 100644
--- a/src/sdeventplus/test/sdevent.hpp
+++ b/src/sdeventplus/test/sdevent.hpp
@@ -94,6 +94,10 @@ class SdEventMock : public internal::SdEvent
MOCK_CONST_METHOD1(sd_event_source_get_signal, int(sd_event_source*));
MOCK_CONST_METHOD2(sd_event_source_get_child_pid,
int(sd_event_source*, pid_t*));
+ MOCK_CONST_METHOD2(sd_event_source_set_destroy_callback,
+ int(sd_event_source*, sd_event_destroy_t));
+ MOCK_CONST_METHOD2(sd_event_source_get_destroy_callback,
+ int(sd_event_source*, sd_event_destroy_t*));
};
} // namespace test
OpenPOWER on IntegriCloud