// Copyright (c) 2012 The Chromium 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 DBUS_SCOPED_DBUS_ERROR_H_
#define DBUS_SCOPED_DBUS_ERROR_H_

#include <dbus/dbus.h>

#include "dbus/dbus_export.h"

namespace dbus {

// Utility class to ensure that DBusError is freed.
class CHROME_DBUS_EXPORT ScopedDBusError {
 public:
  // Do not inline methods that call dbus_error_xxx() functions.
  // See http://crbug.com/416628
  ScopedDBusError();
  ~ScopedDBusError();

  DBusError* get() { return &error_; }
  bool is_set() const;
  const char* name() { return error_.name; }
  const char* message() { return error_.message; }

 private:
  DBusError error_;
};

}  // namespace dbus

#endif  // DBUS_SCOPED_DBUS_ERROR_H_
