1// Copyright 2013 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "mojo/public/cpp/bindings/lib/message_queue.h" 6 7#include "mojo/public/cpp/bindings/message.h" 8#include "mojo/public/cpp/environment/logging.h" 9 10namespace mojo { 11namespace internal { 12 13MessageQueue::MessageQueue() { 14} 15 16MessageQueue::~MessageQueue() { 17 while (!queue_.empty()) 18 Pop(); 19} 20 21bool MessageQueue::IsEmpty() const { 22 return queue_.empty(); 23} 24 25Message* MessageQueue::Peek() { 26 MOJO_DCHECK(!queue_.empty()); 27 return queue_.front(); 28} 29 30void MessageQueue::Push(Message* message) { 31 queue_.push(new Message()); 32 queue_.back()->Swap(message); 33} 34 35void MessageQueue::Pop(Message* message) { 36 MOJO_DCHECK(!queue_.empty()); 37 queue_.front()->Swap(message); 38 Pop(); 39} 40 41void MessageQueue::Pop() { 42 MOJO_DCHECK(!queue_.empty()); 43 delete queue_.front(); 44 queue_.pop(); 45} 46 47} // namespace internal 48} // namespace mojo 49