blob: 98387d34db26d17cf3049b6a94d2d4ed80974275 [file] [log] [blame]
// Copyright 2014 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef BUFFET_LIBBUFFET_PRIVATE_COMMAND_PROPERTY_SET_H_
#define BUFFET_LIBBUFFET_PRIVATE_COMMAND_PROPERTY_SET_H_
#include <string>
#include <base/macros.h>
#include <chromeos/dbus/data_serialization.h>
#include <chromeos/variant_dictionary.h>
#include <dbus/object_manager.h>
#include "buffet/libbuffet/export.h"
namespace dbus {
// Specialize dbus::Property for chromeos::VariantDictionary type.
template <>
inline bool Property<chromeos::VariantDictionary>::PopValueFromReader(
MessageReader* reader) {
return chromeos::dbus_utils::PopVariantValueFromReader(reader, &value_);
}
template <>
inline void Property<chromeos::VariantDictionary>::AppendSetValueToWriter(
MessageWriter* writer) {
chromeos::dbus_utils::AppendValueToWriterAsVariant(writer, set_value_);
}
extern template class Property<chromeos::VariantDictionary>;
} // namespace dbus
namespace buffet {
// PropertySet for remote D-Bus GCD Command object from Buffet daemon.
class CommandPropertySet : public dbus::PropertySet {
public:
CommandPropertySet(dbus::ObjectProxy* object_proxy,
const std::string& interface_name,
const PropertyChangedCallback& callback);
dbus::Property<std::string> id;
dbus::Property<std::string> name;
dbus::Property<std::string> category;
dbus::Property<std::string> status;
dbus::Property<int32_t> progress;
dbus::Property<chromeos::VariantDictionary> parameters;
private:
DISALLOW_COPY_AND_ASSIGN(CommandPropertySet);
};
} // namespace buffet
#endif // BUFFET_LIBBUFFET_PRIVATE_COMMAND_PROPERTY_SET_H_