sdbus-c++ 0.8.3
High-level C++ D-Bus library based on systemd D-Bus implementation
IConnection.h
Go to the documentation of this file.
1
27#ifndef SDBUS_CXX_ICONNECTION_H_
28#define SDBUS_CXX_ICONNECTION_H_
29
30#include <string>
31#include <memory>
32#include <chrono>
33#include <cstdint>
34
35namespace sdbus {
36
37 /********************************************/
48 {
49 public:
50 struct PollData
51 {
52 int fd;
53 short int events;
54 uint64_t timeout_usec;
55 };
56
57 virtual ~IConnection() = default;
58
66 virtual void requestName(const std::string& name) = 0;
67
75 virtual void releaseName(const std::string& name) = 0;
76
82 virtual std::string getUniqueName() const = 0;
83
92 virtual void enterEventLoop() = 0;
93
100 virtual void enterEventLoopAsync() = 0;
101
109 virtual void leaveEventLoop() = 0;
110
120 virtual void addObjectManager(const std::string& objectPath) = 0;
121
140 virtual PollData getEventLoopPollData() const = 0;
141
160 virtual bool processPendingRequest() = 0;
161
174 virtual void setMethodCallTimeout(uint64_t timeout) = 0;
175
179 template <typename _Rep, typename _Period>
180 void setMethodCallTimeout(const std::chrono::duration<_Rep, _Period>& timeout);
181
191 virtual uint64_t getMethodCallTimeout() const = 0;
192
198 [[deprecated("This function has been replaced by enterEventLoop()")]] void enterProcessingLoop();
199
205 [[deprecated("This function has been replaced by enterEventLoopAsync()")]] void enterProcessingLoopAsync();
206
212 [[deprecated("This function has been replaced by leaveEventLoop()")]] void leaveProcessingLoop();
213
219 [[deprecated("This function has been replaced by getEventLoopPollData()")]] PollData getProcessLoopPollData() const;
220 };
221
222 template <typename _Rep, typename _Period>
223 inline void IConnection::setMethodCallTimeout(const std::chrono::duration<_Rep, _Period>& timeout)
224 {
225 auto microsecs = std::chrono::duration_cast<std::chrono::microseconds>(timeout);
226 return setMethodCallTimeout(microsecs.count());
227 }
228
230 {
232 }
233
235 {
237 }
238
240 {
242 }
243
245 {
246 return getEventLoopPollData();
247 }
248
256 [[nodiscard]] std::unique_ptr<sdbus::IConnection> createConnection();
257
266 [[nodiscard]] std::unique_ptr<sdbus::IConnection> createConnection(const std::string& name);
267
275 [[nodiscard]] std::unique_ptr<sdbus::IConnection> createSystemBusConnection();
276
285 [[nodiscard]] std::unique_ptr<sdbus::IConnection> createSystemBusConnection(const std::string& name);
286
294 [[nodiscard]] std::unique_ptr<sdbus::IConnection> createSessionBusConnection();
295
304 [[nodiscard]] std::unique_ptr<sdbus::IConnection> createSessionBusConnection(const std::string& name);
305
314 [[nodiscard]] std::unique_ptr<sdbus::IConnection> createRemoteSystemBusConnection(const std::string& host);
315}
316
317#endif /* SDBUS_CXX_ICONNECTION_H_ */
std::unique_ptr< sdbus::IConnection > createSessionBusConnection()
Creates/opens D-Bus session connection.
std::unique_ptr< sdbus::IConnection > createSystemBusConnection()
Creates/opens D-Bus system connection.
std::unique_ptr< sdbus::IConnection > createRemoteSystemBusConnection(const std::string &host)
Creates/opens D-Bus system connection on a remote host using ssh.
std::unique_ptr< sdbus::IConnection > createConnection()
Creates/opens D-Bus system connection.
Definition: IConnection.h:48
void leaveProcessingLoop()
Definition: IConnection.h:239
void enterProcessingLoop()
Enters I/O event loop on this bus connection.
Definition: IConnection.h:229
virtual void releaseName(const std::string &name)=0
Releases D-Bus name on the connection.
virtual void leaveEventLoop()=0
Leaves the I/O event loop running on this bus connection.
virtual bool processPendingRequest()=0
Process a pending request.
virtual void requestName(const std::string &name)=0
Requests D-Bus name on the connection.
virtual void addObjectManager(const std::string &objectPath)=0
Adds an ObjectManager at the specified D-Bus object path.
virtual std::string getUniqueName() const =0
Retrieve the unique name of a connection. E.g. ":1.xx".
virtual void setMethodCallTimeout(uint64_t timeout)=0
Sets general method call timeout.
virtual void enterEventLoop()=0
Enters I/O event loop on this bus connection.
virtual uint64_t getMethodCallTimeout() const =0
Gets general method call timeout.
virtual PollData getEventLoopPollData() const =0
Returns fd, I/O events and timeout data you can pass to poll.
virtual void enterEventLoopAsync()=0
Enters I/O event loop on this bus connection in a separate thread.
PollData getProcessLoopPollData() const
Definition: IConnection.h:244
void enterProcessingLoopAsync()
Definition: IConnection.h:234
Definition: IConnection.h:51