diff options
Diffstat (limited to 'mojo/edk/system/ports/message_queue.h')
-rw-r--r-- | mojo/edk/system/ports/message_queue.h | 73 |
1 files changed, 0 insertions, 73 deletions
diff --git a/mojo/edk/system/ports/message_queue.h b/mojo/edk/system/ports/message_queue.h deleted file mode 100644 index d9a47ed..0000000 --- a/mojo/edk/system/ports/message_queue.h +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef MOJO_EDK_SYSTEM_PORTS_MESSAGE_QUEUE_H_ -#define MOJO_EDK_SYSTEM_PORTS_MESSAGE_QUEUE_H_ - -#include <stdint.h> - -#include <deque> -#include <functional> -#include <limits> -#include <vector> - -#include "base/macros.h" -#include "mojo/edk/system/ports/message.h" - -namespace mojo { -namespace edk { -namespace ports { - -const uint64_t kInitialSequenceNum = 1; -const uint64_t kInvalidSequenceNum = std::numeric_limits<uint64_t>::max(); - -class MessageFilter; - -// An incoming message queue for a port. MessageQueue keeps track of the highest -// known sequence number and can indicate whether the next sequential message is -// available. Thus the queue enforces message ordering for the consumer without -// enforcing it for the producer (see AcceptMessage() below.) -class MessageQueue { - public: - explicit MessageQueue(); - explicit MessageQueue(uint64_t next_sequence_num); - ~MessageQueue(); - - void set_signalable(bool value) { signalable_ = value; } - - uint64_t next_sequence_num() const { return next_sequence_num_; } - - bool HasNextMessage() const; - - // Gives ownership of the message. If |filter| is non-null, the next message - // will only be retrieved if the filter successfully matches it. - void GetNextMessage(ScopedMessage* message, MessageFilter* filter); - - // Takes ownership of the message. Note: Messages are ordered, so while we - // have added a message to the queue, we may still be waiting on a message - // ahead of this one before we can let any of the messages be returned by - // GetNextMessage. - // - // Furthermore, once has_next_message is set to true, it will remain false - // until GetNextMessage is called enough times to return a null message. - // In other words, has_next_message acts like an edge trigger. - // - void AcceptMessage(ScopedMessage message, bool* has_next_message); - - // Returns all of the ports referenced by messages in this message queue. - void GetReferencedPorts(std::deque<PortName>* ports); - - private: - std::vector<ScopedMessage> heap_; - uint64_t next_sequence_num_; - bool signalable_ = true; - - DISALLOW_COPY_AND_ASSIGN(MessageQueue); -}; - -} // namespace ports -} // namespace edk -} // namespace mojo - -#endif // MOJO_EDK_SYSTEM_PORTS_MESSAGE_QUEUE_H_ |