blob: cdcd169a51adc73c279ba1c5b018155f83e93c56 [file] [log] [blame]
Ed Tanousc9b55212017-06-12 13:25:51 -07001// Copyright (c) Benjamin Kietzman (github.com/bkietz)
2//
3// Distributed under the Boost Software License, Version 1.0. (See accompanying
4// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
5
6#ifndef DBUS_MATCH_HPP
7#define DBUS_MATCH_HPP
8
9#include <string>
10#include <boost/asio.hpp>
11
12#include <dbus/connection.hpp>
13#include <dbus/error.hpp>
14
15namespace dbus {
16
17/// Simple placeholder object for a match rule.
18/**
19 * A match rule determines what messages will be received by this application.
20 *
21 * Each rule will be represented by an instance of match. To remove that rule,
22 * dispose of the object.
23 */
24class match {
Ed Tanous5fceeb42017-06-28 09:43:09 -070025 connection_ptr connection_;
Ed Tanousc9b55212017-06-12 13:25:51 -070026 std::string expression_;
27
28 public:
Ed Tanous5fceeb42017-06-28 09:43:09 -070029 match(connection_ptr c, BOOST_ASIO_MOVE_ARG(std::string) e)
Ed Tanousc9b55212017-06-12 13:25:51 -070030 : connection_(c), expression_(BOOST_ASIO_MOVE_CAST(std::string)(e)) {
Ed Tanous5fceeb42017-06-28 09:43:09 -070031 connection_->new_match(*this);
Ed Tanousc9b55212017-06-12 13:25:51 -070032 }
33
Ed Tanous5fceeb42017-06-28 09:43:09 -070034 ~match() { connection_->delete_match(*this); }
Ed Tanousc9b55212017-06-12 13:25:51 -070035
36 const std::string& get_expression() const { return expression_; }
37
38 match(match&&) = delete;
39 match& operator=(match&&) = delete;
40};
41
42} // namespace dbus
43
44#include <dbus/impl/match.ipp>
45
46#endif // DBUS_MATCH_HPP