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) 5f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "mojo/public/bindings/lib/message_queue.h" 6f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 7f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include <assert.h> 8f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include <stddef.h> 9f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 10f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "mojo/public/bindings/lib/message.h" 11f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 12f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace mojo { 13f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 14f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)MessageQueue::MessageQueue() { 15f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 16f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 17f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)MessageQueue::~MessageQueue() { 18f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) while (!queue_.empty()) 19f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) Pop(); 20f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 21f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 22f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)bool MessageQueue::IsEmpty() const { 23f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return queue_.empty(); 24f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 25f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 26f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)Message* MessageQueue::Peek() { 27f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) assert(!queue_.empty()); 28f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return queue_.front(); 29f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 30f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 31f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)void MessageQueue::Push(Message* message) { 32f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) queue_.push(new Message()); 33f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) queue_.back()->Swap(message); 34f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 35f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 36f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)void MessageQueue::Pop(Message* message) { 37f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) assert(!queue_.empty()); 38f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) queue_.front()->Swap(message); 39f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) Pop(); 40f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 41f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 42f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)void MessageQueue::Pop() { 43f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) assert(!queue_.empty()); 44f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) delete queue_.front(); 45f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) queue_.pop(); 46f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 47f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 48f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} // namespace mojo 49