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