Add an extension override bubble and warning box for proxy extensions. (2nd attempt...
[chromium-blink-merge.git] / mojo / system / message_in_transit_queue.h
bloba70a7ef742b2038cc3c40b78a08fb7d97ca1b4d0
1 // Copyright 2014 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.
5 #ifndef MOJO_SYSTEM_MESSAGE_QUEUE_H_
6 #define MOJO_SYSTEM_MESSAGE_QUEUE_H_
8 #include <deque>
10 #include "base/macros.h"
11 #include "base/memory/scoped_ptr.h"
12 #include "mojo/system/message_in_transit.h"
13 #include "mojo/system/system_impl_export.h"
15 namespace mojo {
16 namespace system {
18 // A simple queue for |MessageInTransit|s (that owns its messages).
19 // This class is not thread-safe.
20 // TODO(vtl): Write tests.
21 class MOJO_SYSTEM_IMPL_EXPORT MessageInTransitQueue {
22 public:
23 MessageInTransitQueue();
25 struct PassContents {};
26 // Constructor that takes over the contents of another
27 // |MessageInTransitQueue|, leaving it empty.
28 MessageInTransitQueue(PassContents, MessageInTransitQueue* other);
30 ~MessageInTransitQueue();
32 bool IsEmpty() const {
33 return queue_.empty();
36 void AddMessage(scoped_ptr<MessageInTransit> message) {
37 queue_.push_back(message.release());
40 scoped_ptr<MessageInTransit> GetMessage() {
41 MessageInTransit* rv = queue_.front();
42 queue_.pop_front();
43 return make_scoped_ptr(rv);
46 MessageInTransit* PeekMessage() {
47 return queue_.front();
50 void DiscardMessage() {
51 delete queue_.front();
52 queue_.pop_front();
55 void Clear();
57 private:
58 // TODO(vtl): When C++11 is available, switch this to a deque of
59 // |scoped_ptr|/|unique_ptr|s.
60 std::deque<MessageInTransit*> queue_;
62 DISALLOW_COPY_AND_ASSIGN(MessageInTransitQueue);
66 } // namespace system
67 } // namespace mojo
69 #endif // MOJO_SYSTEM_MESSAGE_QUEUE_H_