blob: 1fc64fdda750f004c5306c0f63650b4bba25ab20 [file]
// Copyright (c) 2011 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 SRC_IPCONFIG_IMPL_H_
#define SRC_IPCONFIG_IMPL_H_
#include <glib.h>
#include <string>
#include <vector>
#include <base/basictypes.h> // NOLINT
#include <dbus-c++/dbus.h> // NOLINT
#include "src/ipconfig.h"
#include "src/flimflam_ipconfig_client_glue.h"
#include "src/property_changed_handler.h"
namespace cashew {
// represents an ipconfig and provides access to ipconfig properties
// flimflam does not send change signals for ipconfig objects so
// nothing is cached
class IpconfigImpl : public Ipconfig,
public org::chromium::flimflam::IPConfig_proxy,
public DBus::IntrospectableProxy,
public DBus::ObjectProxy {
public:
IpconfigImpl(DBus::Connection& connection, // NOLINT
const DBus::Path& path);
virtual ~IpconfigImpl();
// Ipconfig methods
virtual const DBus::Path& GetPath() const;
virtual const std::vector<std::string>& GetNameServers();
private:
// D-Bus path for Flimflam ipconfig that we represent
// this is our unique identifier
const DBus::Path path_;
// name servers
std::vector<std::string> nameservers_;
// get ipconfig properties from Flimflam
// returns true on success and false on failure
bool GetIpconfigProperties();
DISALLOW_COPY_AND_ASSIGN(IpconfigImpl);
};
} // namespace cashew
#endif // SRC_IPCONFIG_IMPL_H_