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