blob: 18aa3f35c2b960414b043aeece684110339b19c0 [file] [log] [blame]
Chris Masoned7732e42011-05-20 11:08:56 -07001// Copyright (c) 2011 The Chromium OS 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 SHILL_DBUS_ADAPTOR_H_
6#define SHILL_DBUS_ADAPTOR_H_
7
Chris Masone8fe2c7e2011-06-09 15:51:19 -07008#include <map>
Chris Masoned7732e42011-05-20 11:08:56 -07009#include <string>
Chris Masone8fe2c7e2011-06-09 15:51:19 -070010#include <vector>
Chris Masoned7732e42011-05-20 11:08:56 -070011
Chris Masoned0ceb8c2011-06-02 10:05:39 -070012#include <base/basictypes.h>
Chris Masoned7732e42011-05-20 11:08:56 -070013#include <dbus-c++/dbus.h>
14
Chris Masoned7732e42011-05-20 11:08:56 -070015namespace shill {
16
17#define SHILL_INTERFACE "org.chromium.flimflam"
18#define SHILL_PATH "/org/chromium/flimflam"
19
Chris Masone8fe2c7e2011-06-09 15:51:19 -070020class PropertyStoreInterface;
21
Chris Masoned7732e42011-05-20 11:08:56 -070022// Superclass for all DBus-backed Adaptor objects
23class DBusAdaptor : public DBus::ObjectAdaptor {
24 public:
Chris Masoned0ceb8c2011-06-02 10:05:39 -070025 DBusAdaptor(DBus::Connection* conn, const std::string& object_path);
26 virtual ~DBusAdaptor();
27
Chris Masone8fe2c7e2011-06-09 15:51:19 -070028 static bool DispatchOnType(PropertyStoreInterface *store,
29 const std::string& name,
30 const ::DBus::Variant& value,
31 ::DBus::Error &error);
Chris Masoned0ceb8c2011-06-02 10:05:39 -070032
Chris Masone8fe2c7e2011-06-09 15:51:19 -070033 static ::DBus::Variant BoolToVariant(bool value);
34 static ::DBus::Variant ByteToVariant(uint8 value);
35 static ::DBus::Variant Int16ToVariant(int16 value);
36 static ::DBus::Variant Int32ToVariant(int32 value);
37 static ::DBus::Variant StringToVariant(const std::string& value);
38 static ::DBus::Variant StringmapToVariant(
39 const std::map<std::string, std::string>& value);
40 static ::DBus::Variant StringsToVariant(
41 const std::vector<std::string>& value);
42 static ::DBus::Variant Uint16ToVariant(uint16 value);
43 static ::DBus::Variant Uint32ToVariant(uint32 value);
44
45 static bool IsBool(::DBus::Signature signature);
46 static bool IsByte(::DBus::Signature signature);
47 static bool IsInt16(::DBus::Signature signature);
48 static bool IsInt32(::DBus::Signature signature);
49 static bool IsString(::DBus::Signature signature);
50 static bool IsStringmap(::DBus::Signature signature);
51 static bool IsStrings(::DBus::Signature signature);
52 static bool IsUint16(::DBus::Signature signature);
53 static bool IsUint32(::DBus::Signature signature);
54
55 private:
56 static const char kStringmapSig[];
57 static const char kStringsSig[];
58 DISALLOW_COPY_AND_ASSIGN(DBusAdaptor);
Chris Masoned7732e42011-05-20 11:08:56 -070059};
60
61} // namespace shill
62#endif // SHILL_DBUS_ADAPTOR_H_