1424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
2424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// found in the LICENSE file.
4424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)
5424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)#ifndef CHROMEOS_DBUS_DBUS_CLIENT_H_
6424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)#define CHROMEOS_DBUS_DBUS_CLIENT_H_
7424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)
81e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "base/basictypes.h"
91e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
10424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)namespace dbus {
11424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)class Bus;
125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)}  // namespace dbus
13424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)
14424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)namespace chromeos {
15424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)
16424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// Interface for all DBus clients handled by DBusThreadManager. It restricts
17424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// access to the Init function to DBusThreadManagerImpl only to prevent
18424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// incorrect calls. Stub clients may lift that restriction however.
19424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)class DBusClient {
20424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) protected:
21424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)  virtual ~DBusClient() {}
22424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)
23424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)  // This function is called by DBusThreadManager. Only in unit tests, which
24424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)  // don't use DBusThreadManager, this function can be called through Stub
25424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)  // implementations (they change Init's member visibility to public).
26424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)  virtual void Init(dbus::Bus* bus) = 0;
27424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)
28424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) private:
291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  friend class DBusThreadManager;
301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
31424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)  DISALLOW_ASSIGN(DBusClient);
32424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)};
33424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)
34424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)}  // namespace chromeos
35424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)
36424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)#endif  // CHROMEOS_DBUS_DBUS_CLIENT_H_
37