| Index: runtime/vm/message.h | 
| =================================================================== | 
| --- runtime/vm/message.h	(revision 6698) | 
| +++ runtime/vm/message.h	(working copy) | 
| @@ -47,6 +47,8 @@ | 
| uint8_t* data() const { return data_; } | 
| Priority priority() const { return priority_; } | 
|  | 
| +  bool IsOOB() const { return priority_ == Message::kOOBPriority; } | 
| + | 
| private: | 
| friend class MessageQueue; | 
|  | 
| @@ -67,90 +69,22 @@ | 
|  | 
| void Enqueue(Message* msg); | 
|  | 
| -  // Gets the next message from the message queue, possibly blocking | 
| -  // if no message is available. 'millis' is a timeout in | 
| -  // milliseconds. If 'millis' is 0, then this means to block | 
| -  // indefinitely. May block if no message is available. May return | 
| -  // NULL even if 'millis' is 0 due to spurious wakeups. | 
| -  Message* Dequeue(int64_t millis); | 
| +  // Gets the next message from the message queue or NULL if no | 
| +  // message is available.  This function will not block. | 
| +  Message* Dequeue(); | 
|  | 
| -  // Gets the next message from the message queue if available.  Will | 
| -  // not block. | 
| -  Message* DequeueNoWait(); | 
| - | 
| -  // Gets the next message of the specified priority or greater from | 
| -  // the message queue if available.  Will not block. | 
| -  Message* DequeueNoWaitWithPriority(Message::Priority min_priority); | 
| - | 
| void Flush(Dart_Port port); | 
| void FlushAll(); | 
|  | 
| private: | 
| friend class MessageQueueTestPeer; | 
|  | 
| -  Message* DequeueNoWaitHoldsLock(Message::Priority min_priority); | 
| +  Message* head_; | 
| +  Message* tail_; | 
|  | 
| -  Monitor monitor_; | 
| -  Message* head_[Message::kNumPriorities]; | 
| -  Message* tail_[Message::kNumPriorities]; | 
| - | 
| DISALLOW_COPY_AND_ASSIGN(MessageQueue); | 
| }; | 
|  | 
| -// A MessageHandler is an entity capable of accepting messages. | 
| -class MessageHandler { | 
| - protected: | 
| -  MessageHandler(); | 
| - | 
| -  // Allows subclasses to provide custom message notification. | 
| -  virtual void MessageNotify(Message::Priority priority); | 
| - | 
| - public: | 
| -  virtual ~MessageHandler(); | 
| - | 
| -  // Allow subclasses to provide a handler name. | 
| -  virtual const char* name() const; | 
| - | 
| -#if defined(DEBUG) | 
| -  // Check that it is safe to access this message handler. | 
| -  // | 
| -  // For example, if this MessageHandler is an isolate, then it is | 
| -  // only safe to access it when the MessageHandler is the current | 
| -  // isolate. | 
| -  virtual void CheckAccess(); | 
| -#endif | 
| - | 
| -  void PostMessage(Message* message); | 
| -  void ClosePort(Dart_Port port); | 
| -  void CloseAllPorts(); | 
| - | 
| -  // A message handler tracks how many live ports it has. | 
| -  bool HasLivePorts() const { return live_ports_ > 0; } | 
| -  void increment_live_ports() { | 
| -#if defined(DEBUG) | 
| -    CheckAccess(); | 
| -#endif | 
| -    live_ports_++; | 
| -  } | 
| -  void decrement_live_ports() { | 
| -#if defined(DEBUG) | 
| -    CheckAccess(); | 
| -#endif | 
| -    live_ports_--; | 
| -  } | 
| - | 
| -  // Returns true if the handler is owned by the PortMap. | 
| -  // | 
| -  // This is used to delete handlers when their last live port is closed. | 
| -  virtual bool OwnedByPortMap() const { return false; } | 
| - | 
| -  MessageQueue* queue() const { return queue_; } | 
| - | 
| - private: | 
| -  intptr_t live_ports_; | 
| -  MessageQueue* queue_; | 
| -}; | 
| - | 
| }  // namespace dart | 
|  | 
| #endif  // VM_MESSAGE_H_ | 
|  |