sdbus-c++ 1.2.0
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
31#include <string>
32#include <memory>
33#include <chrono>
34#include <cstdint>
35#include <optional>
36
37namespace sdbus {
38
39 /********************************************/
50 {
51 public:
65 struct PollData
66 {
70 int fd;
74 short int events;
75
79 uint64_t timeout_usec;
80
88 [[nodiscard]] std::chrono::microseconds getAbsoluteTimeout() const
89 {
90 return std::chrono::microseconds(timeout_usec);
91 }
92
98 [[nodiscard]] std::optional<std::chrono::microseconds> getRelativeTimeout() const;
99
106 [[nodiscard]] int getPollTimeout() const;
107 };
108
109 virtual ~IConnection() = default;
110
118 virtual void requestName(const std::string& name) = 0;
119
127 virtual void releaseName(const std::string& name) = 0;
128
134 virtual std::string getUniqueName() const = 0;
135
144 virtual void enterEventLoop() = 0;
145
152 virtual void enterEventLoopAsync() = 0;
153
161 virtual void leaveEventLoop() = 0;
162
178 [[deprecated("Use one of other addObjectManager overloads")]] virtual void addObjectManager(const std::string& objectPath) = 0;
179
198 virtual PollData getEventLoopPollData() const = 0;
199
218 virtual bool processPendingRequest() = 0;
219
232 virtual void setMethodCallTimeout(uint64_t timeout) = 0;
233
237 template <typename _Rep, typename _Period>
238 void setMethodCallTimeout(const std::chrono::duration<_Rep, _Period>& timeout);
239
249 virtual uint64_t getMethodCallTimeout() const = 0;
250
266 virtual void addObjectManager(const std::string& objectPath, floating_slot_t) = 0;
267
289 [[nodiscard]] virtual Slot addMatch(const std::string& match, message_handler callback) = 0;
290
307 virtual void addMatch(const std::string& match, message_handler callback, floating_slot_t) = 0;
308
314 [[deprecated("This function has been replaced by enterEventLoop()")]] void enterProcessingLoop();
315
321 [[deprecated("This function has been replaced by enterEventLoopAsync()")]] void enterProcessingLoopAsync();
322
328 [[deprecated("This function has been replaced by leaveEventLoop()")]] void leaveProcessingLoop();
329
335 [[deprecated("This function has been replaced by getEventLoopPollData()")]] PollData getProcessLoopPollData() const;
336 };
337
338 template <typename _Rep, typename _Period>
339 inline void IConnection::setMethodCallTimeout(const std::chrono::duration<_Rep, _Period>& timeout)
340 {
341 auto microsecs = std::chrono::duration_cast<std::chrono::microseconds>(timeout);
342 return setMethodCallTimeout(microsecs.count());
343 }
344
346 {
348 }
349
351 {
353 }
354
356 {
358 }
359
361 {
362 return getEventLoopPollData();
363 }
364
372 [[nodiscard]] std::unique_ptr<sdbus::IConnection> createConnection();
373
382 [[nodiscard]] std::unique_ptr<sdbus::IConnection> createConnection(const std::string& name);
383
391 [[nodiscard]] std::unique_ptr<sdbus::IConnection> createDefaultBusConnection();
392
401 [[nodiscard]] std::unique_ptr<sdbus::IConnection> createDefaultBusConnection(const std::string& name);
402
410 [[nodiscard]] std::unique_ptr<sdbus::IConnection> createSystemBusConnection();
411
420 [[nodiscard]] std::unique_ptr<sdbus::IConnection> createSystemBusConnection(const std::string& name);
421
429 [[nodiscard]] std::unique_ptr<sdbus::IConnection> createSessionBusConnection();
430
439 [[nodiscard]] std::unique_ptr<sdbus::IConnection> createSessionBusConnection(const std::string& name);
440
451 [[nodiscard]] std::unique_ptr<sdbus::IConnection> createSessionBusConnectionWithAddress(const std::string& address);
452
461 [[nodiscard]] std::unique_ptr<sdbus::IConnection> createRemoteSystemBusConnection(const std::string& host);
462}
463
464#endif /* SDBUS_CXX_ICONNECTION_H_ */
std::unique_ptr< sdbus::IConnection > createSessionBusConnection()
Creates/opens D-Bus session bus connection.
std::unique_ptr< sdbus::IConnection > createSystemBusConnection()
Creates/opens D-Bus system bus connection.
std::unique_ptr< sdbus::IConnection > createSessionBusConnectionWithAddress(const std::string &address)
Creates/opens D-Bus session bus connection at a custom address.
std::unique_ptr< sdbus::IConnection > createDefaultBusConnection()
Creates/opens D-Bus session bus connection when in a user context, and a system bus 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 bus connection.
Definition: IConnection.h:50
void leaveProcessingLoop()
Definition: IConnection.h:355
void enterProcessingLoop()
Enters I/O event loop on this bus connection.
Definition: IConnection.h:345
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 void addObjectManager(const std::string &objectPath, floating_slot_t)=0
Adds an ObjectManager at the specified D-Bus object path.
virtual PollData getEventLoopPollData() const =0
Returns fd, I/O events and timeout data you can pass to poll.
virtual void addMatch(const std::string &match, message_handler callback, floating_slot_t)=0
Adds a floating match rule for incoming message dispatching.
virtual void enterEventLoopAsync()=0
Enters I/O event loop on this bus connection in a separate thread.
PollData getProcessLoopPollData() const
Definition: IConnection.h:360
void enterProcessingLoopAsync()
Definition: IConnection.h:350
virtual Slot addMatch(const std::string &match, message_handler callback)=0
Adds a match rule for incoming message dispatching.
Definition: IConnection.h:66
short int events
Definition: IConnection.h:74
std::optional< std::chrono::microseconds > getRelativeTimeout() const
uint64_t timeout_usec
Definition: IConnection.h:79
int fd
Definition: IConnection.h:70
std::chrono::microseconds getAbsoluteTimeout() const
Definition: IConnection.h:88
Definition: TypeTraits.h:73