blob: 5de652b3e20e39cbd9f47d3d56b9cf21b9b0a9ef [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 Masoneb925cc82011-06-22 15:39:57 -070020class PropertyStore;
Chris Masone8fe2c7e2011-06-09 15:51:19 -070021
Chris Masoned7732e42011-05-20 11:08:56 -070022// Superclass for all DBus-backed Adaptor objects
23class DBusAdaptor : public DBus::ObjectAdaptor {
24 public:
Chris Masoneb925cc82011-06-22 15:39:57 -070025 DBusAdaptor(DBus::Connection* conn, const std::string &object_path);
Chris Masoned0ceb8c2011-06-02 10:05:39 -070026 virtual ~DBusAdaptor();
27
Chris Masoneb925cc82011-06-22 15:39:57 -070028 static bool DispatchOnType(PropertyStore *store,
29 const std::string &name,
30 const ::DBus::Variant &value,
Chris Masone8fe2c7e2011-06-09 15:51:19 -070031 ::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);
Chris Masoneb925cc82011-06-22 15:39:57 -070037 static ::DBus::Variant PathToVariant(const ::DBus::Path &value);
38 static ::DBus::Variant StringToVariant(const std::string &value);
Chris Masone8fe2c7e2011-06-09 15:51:19 -070039 static ::DBus::Variant StringmapToVariant(
Chris Masoneb925cc82011-06-22 15:39:57 -070040 const std::map<std::string, std::string> &value);
41 static ::DBus::Variant StringmapsToVariant(
42 const std::vector<std::map<std::string, std::string> > &value);
Chris Masone8fe2c7e2011-06-09 15:51:19 -070043 static ::DBus::Variant StringsToVariant(
Chris Masoneb925cc82011-06-22 15:39:57 -070044 const std::vector<std::string> &value);
Chris Masone8fe2c7e2011-06-09 15:51:19 -070045 static ::DBus::Variant Uint16ToVariant(uint16 value);
46 static ::DBus::Variant Uint32ToVariant(uint32 value);
47
48 static bool IsBool(::DBus::Signature signature);
49 static bool IsByte(::DBus::Signature signature);
50 static bool IsInt16(::DBus::Signature signature);
51 static bool IsInt32(::DBus::Signature signature);
Chris Masone3bd3c8c2011-06-13 08:20:26 -070052 static bool IsPath(::DBus::Signature signature);
Chris Masone8fe2c7e2011-06-09 15:51:19 -070053 static bool IsString(::DBus::Signature signature);
54 static bool IsStringmap(::DBus::Signature signature);
55 static bool IsStrings(::DBus::Signature signature);
56 static bool IsUint16(::DBus::Signature signature);
57 static bool IsUint32(::DBus::Signature signature);
58
59 private:
60 static const char kStringmapSig[];
61 static const char kStringsSig[];
62 DISALLOW_COPY_AND_ASSIGN(DBusAdaptor);
Chris Masoned7732e42011-05-20 11:08:56 -070063};
64
65} // namespace shill
66#endif // SHILL_DBUS_ADAPTOR_H_