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