sdbus-c++  0.8.1
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 
35 namespace 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  {
231  enterEventLoop();
232  }
233 
235  {
237  }
238 
240  {
241  leaveEventLoop();
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_ */
virtual void requestName(const std::string &name)=0
Requests D-Bus name on the connection.
virtual void leaveEventLoop()=0
Leaves the I/O event loop running on this bus connection.
void leaveProcessingLoop()
Definition: IConnection.h:239
PollData getProcessLoopPollData() const
Definition: IConnection.h:244
virtual void enterEventLoopAsync()=0
Enters I/O event loop on this bus connection in a separate thread.
virtual void releaseName(const std::string &name)=0
Releases D-Bus name on the 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 > createSystemBusConnection()
Creates/opens D-Bus system connection.
virtual void setMethodCallTimeout(uint64_t timeout)=0
Sets general method call timeout.
virtual std::string getUniqueName() const =0
Retrieve the unique name of a connection. E.g. ":1.xx".
std::unique_ptr< sdbus::IConnection > createConnection()
Creates/opens D-Bus system connection.
void enterProcessingLoopAsync()
Definition: IConnection.h:234
Definition: IConnection.h:50
virtual uint64_t getMethodCallTimeout() const =0
Gets general method call timeout.
std::unique_ptr< sdbus::IConnection > createSessionBusConnection()
Creates/opens D-Bus session connection.
void enterProcessingLoop()
Enters I/O event loop on this bus connection.
Definition: IConnection.h:229
virtual void addObjectManager(const std::string &objectPath)=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 bool processPendingRequest()=0
Process a pending request.
virtual void enterEventLoop()=0
Enters I/O event loop on this bus connection.
Definition: IConnection.h:47