blob: d15e2e0596b94a4a4347d15e9d7cd179b044fd9c [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 Masone889666b2011-07-03 12:58:50 -070015#include "shill/accessor_interface.h"
16
Chris Masoned7732e42011-05-20 11:08:56 -070017namespace shill {
18
19#define SHILL_INTERFACE "org.chromium.flimflam"
20#define SHILL_PATH "/org/chromium/flimflam"
21
Chris Masoneb925cc82011-06-22 15:39:57 -070022class PropertyStore;
Chris Masone8fe2c7e2011-06-09 15:51:19 -070023
Chris Masoned7732e42011-05-20 11:08:56 -070024// Superclass for all DBus-backed Adaptor objects
25class DBusAdaptor : public DBus::ObjectAdaptor {
26 public:
Chris Masoneb925cc82011-06-22 15:39:57 -070027 DBusAdaptor(DBus::Connection* conn, const std::string &object_path);
Chris Masoned0ceb8c2011-06-02 10:05:39 -070028 virtual ~DBusAdaptor();
29
Chris Masoneb925cc82011-06-22 15:39:57 -070030 static bool DispatchOnType(PropertyStore *store,
31 const std::string &name,
32 const ::DBus::Variant &value,
Chris Masonea8a2c252011-06-27 22:16:30 -070033 ::DBus::Error *error);
34 static bool GetProperties(PropertyStore *store,
35 std::map<std::string, ::DBus::Variant> *out,
36 ::DBus::Error *error);
Chris Masoned0ceb8c2011-06-02 10:05:39 -070037
Chris Masone8fe2c7e2011-06-09 15:51:19 -070038 static ::DBus::Variant BoolToVariant(bool value);
39 static ::DBus::Variant ByteToVariant(uint8 value);
40 static ::DBus::Variant Int16ToVariant(int16 value);
41 static ::DBus::Variant Int32ToVariant(int32 value);
Chris Masoneb925cc82011-06-22 15:39:57 -070042 static ::DBus::Variant PathToVariant(const ::DBus::Path &value);
43 static ::DBus::Variant StringToVariant(const std::string &value);
Chris Masone889666b2011-07-03 12:58:50 -070044 static ::DBus::Variant StringmapToVariant(const Stringmap &value);
45 static ::DBus::Variant StringmapsToVariant(const Stringmaps &value);
46 static ::DBus::Variant StringsToVariant(const Strings &value);
47 static ::DBus::Variant StrIntPairToVariant(const StrIntPair &value);
Chris Masone8fe2c7e2011-06-09 15:51:19 -070048 static ::DBus::Variant Uint16ToVariant(uint16 value);
49 static ::DBus::Variant Uint32ToVariant(uint32 value);
50
51 static bool IsBool(::DBus::Signature signature);
52 static bool IsByte(::DBus::Signature signature);
53 static bool IsInt16(::DBus::Signature signature);
54 static bool IsInt32(::DBus::Signature signature);
Chris Masone3bd3c8c2011-06-13 08:20:26 -070055 static bool IsPath(::DBus::Signature signature);
Chris Masone8fe2c7e2011-06-09 15:51:19 -070056 static bool IsString(::DBus::Signature signature);
57 static bool IsStringmap(::DBus::Signature signature);
Chris Masone27c4aa52011-07-02 13:10:14 -070058 static bool IsStringmaps(::DBus::Signature signature);
Chris Masone8fe2c7e2011-06-09 15:51:19 -070059 static bool IsStrings(::DBus::Signature signature);
60 static bool IsUint16(::DBus::Signature signature);
61 static bool IsUint32(::DBus::Signature signature);
62
63 private:
64 static const char kStringmapSig[];
Chris Masone27c4aa52011-07-02 13:10:14 -070065 static const char kStringmapsSig[];
Chris Masone8fe2c7e2011-06-09 15:51:19 -070066 static const char kStringsSig[];
67 DISALLOW_COPY_AND_ASSIGN(DBusAdaptor);
Chris Masoned7732e42011-05-20 11:08:56 -070068};
69
70} // namespace shill
71#endif // SHILL_DBUS_ADAPTOR_H_