// 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_
