// 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 CROS_DISKS_DEVICE_EVENT_QUEUE_H_
#define CROS_DISKS_DEVICE_EVENT_QUEUE_H_

#include <base/basictypes.h>

#include "cros-disks/device_event.h"

namespace cros_disks {

struct DeviceEvent;

// An event queue for keeping track of deferred device events.
class DeviceEventQueue {
 public:
  DeviceEventQueue();

  ~DeviceEventQueue();

  // Removes a device event from the event queue in a FIFO manner.
  // It is a no-op if the queue is empty.
  void Remove();

  // Adds a device event to the event queue in a FIFO manner.
  //
  // Due to its use for keeping track of deferred device events, the
  // event queue does not simply accumulate events being passed to the
  // Add method. Depending on the type of an event and its correlation
  // with other events in the queue, the event may be discarded or cause
  // other events in the queue to be discarded.
  //
  // The rules are:
  // 1) Ignored and DeviceScanned events are always discarded as they
  //    do not carry any useful information to the prospective client.
  // 2) If a DeviceRemoved event is seen after a DeviceAdded event with
  //    the same device path, both events are discarded as if the device
  //    has not been added.
  // 3) If a DiskRemoved event is seen after a DiskAdded or DiskChanged
  //    event with the same device path, both events are discarded as if
  //    the device has not been added.
  // 4) A DiskChanged event is discarded if a DiskAdded event is already
  //    in the queue. This is because both events are deferred and thus
  //    the DiskChanged event, which signals some property changes in the
  //    disk, can be absorbed into the DiskAdded event.
  void Add(const DeviceEvent& event);

  // Returns a pointer to the oldest device event at the head of event
  // queue or NULL if the queue is empty. The pointer will become
  // invalid upon the next Remove call.
  const DeviceEvent* Head() const;

  const DeviceEventList& events() const { return events_; }

 private:
  // A list of events in the event queue.
  // The latest event is inserted at the beginning of the list.
  DeviceEventList events_;

  DISALLOW_COPY_AND_ASSIGN(DeviceEventQueue);
};

}  // namespace cros_disks

#endif  // CROS_DISKS_DEVICE_EVENT_QUEUE_H_
