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

#include <list>
#include <string>

#include <base/macros.h>

namespace cros_disks {

class GlibProcess;

// A class for ejecting any removable media on a device.
class DeviceEjector {
 public:
  DeviceEjector();
  virtual ~DeviceEjector();

  // Ejects any removable media on a device at |device_path| using the
  // 'eject' program. Returns true if the eject process has launched
  // successfully (but may not complete until OnEjectProcessTerminated
  // is called).
  virtual bool Eject(const std::string& device_path);

 private:
  // Invoked when an eject process has terminated.
  void OnEjectProcessTerminated(GlibProcess* process);

  // List of outstanding eject processes.
  std::list<GlibProcess*> eject_processes_;

  DISALLOW_COPY_AND_ASSIGN(DeviceEjector);
};

}  // namespace cros_disks

#endif  // CROS_DISKS_DEVICE_EJECTOR_H_
