// Copyright 2013 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.

#include "mojo/public/cpp/bindings/tests/message_queue.h"

#include "base/logging.h"
#include "mojo/public/cpp/bindings/message.h"

namespace mojo {
namespace test {

MessageQueue::MessageQueue() {
}

MessageQueue::~MessageQueue() {
}

bool MessageQueue::IsEmpty() const {
  return queue_.empty();
}

void MessageQueue::Push(Message* message) {
  queue_.emplace(std::move(*message));
}

void MessageQueue::Pop(Message* message) {
  DCHECK(!queue_.empty());
  *message = std::move(queue_.front());
  Pop();
}

void MessageQueue::Pop() {
  DCHECK(!queue_.empty());
  queue_.pop();
}

}  // namespace test
}  // namespace mojo
