1// Copyright 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CHROMEOS_DBUS_DBUS_CLIENT_H_
6#define CHROMEOS_DBUS_DBUS_CLIENT_H_
7
8#include "base/basictypes.h"
9
10namespace dbus {
11class Bus;
12}  // namespace dbus
13
14namespace chromeos {
15
16// Interface for all DBus clients handled by DBusThreadManager. It restricts
17// access to the Init function to DBusThreadManagerImpl only to prevent
18// incorrect calls. Stub clients may lift that restriction however.
19class DBusClient {
20 protected:
21  virtual ~DBusClient() {}
22
23  // This function is called by DBusThreadManager. Only in unit tests, which
24  // don't use DBusThreadManager, this function can be called through Stub
25  // implementations (they change Init's member visibility to public).
26  virtual void Init(dbus::Bus* bus) = 0;
27
28 private:
29  friend class DBusThreadManager;
30
31  DISALLOW_ASSIGN(DBusClient);
32};
33
34}  // namespace chromeos
35
36#endif  // CHROMEOS_DBUS_DBUS_CLIENT_H_
37