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 #ifndef MOJO_PUBLIC_CPP_BINDINGS_TESTS_MESSAGE_QUEUE_H_ 6 #define MOJO_PUBLIC_CPP_BINDINGS_TESTS_MESSAGE_QUEUE_H_ 7 8 #include <queue> 9 10 #include "base/macros.h" 11 12 namespace mojo { 13 class Message; 14 15 namespace test { 16 17 // A queue for Message objects. 18 class MessageQueue { 19 public: 20 MessageQueue(); 21 ~MessageQueue(); 22 23 bool IsEmpty() const; 24 25 // This method copies the message data and steals ownership of its handles. 26 void Push(Message* message); 27 28 // Removes the next message from the queue, copying its data and transferring 29 // ownership of its handles to the given |message|. 30 void Pop(Message* message); 31 size()32 size_t size() const { return queue_.size(); } 33 34 private: 35 void Pop(); 36 37 std::queue<Message*> queue_; 38 39 DISALLOW_COPY_AND_ASSIGN(MessageQueue); 40 }; 41 42 } // namespace test 43 } // namespace mojo 44 45 #endif // MOJO_PUBLIC_CPP_BINDINGS_TESTS_MESSAGE_QUEUE_H_ 46