| Index: runtime/vm/message.h
|
| ===================================================================
|
| --- runtime/vm/message.h (revision 36729)
|
| +++ runtime/vm/message.h (working copy)
|
| @@ -23,21 +23,38 @@
|
| kNumPriorities = 2,
|
| } Priority;
|
|
|
| + // Values defining the type of OOB messages. OOB messages can only be
|
| + // fixed length arrays where the first element is a Smi with one of the
|
| + // valid values below.
|
| + typedef enum {
|
| + kIllegalOOB = 0,
|
| + kServiceOOBMsg = 1,
|
| + kIsolateLibOOBMsg = 2
|
| + } OOBMsgTag;
|
| +
|
| // A port number which is never used.
|
| static const Dart_Port kIllegalPort = 0;
|
|
|
| // A new message to be sent between two isolates. The data handed to this
|
| // message will be disposed by calling free() once the message object is
|
| // being destructed (after delivery or when the receiving port is closed).
|
| - Message(Dart_Port dest_port, uint8_t* data, intptr_t len, Priority priority)
|
| + Message(Dart_Port dest_port,
|
| + uint8_t* data,
|
| + intptr_t len,
|
| + Priority priority,
|
| + Dart_Port delivery_failure_port = kIllegalPort)
|
| : next_(NULL),
|
| dest_port_(dest_port),
|
| + delivery_failure_port_(delivery_failure_port),
|
| data_(data),
|
| len_(len),
|
| priority_(priority) {
|
| ASSERT(dest_port != kIllegalPort);
|
| + ASSERT((priority == kNormalPriority) ||
|
| + (delivery_failure_port == kIllegalPort));
|
| }
|
| ~Message() {
|
| + ASSERT(delivery_failure_port_ == kIllegalPort);
|
| free(data_);
|
| }
|
|
|
| @@ -48,11 +65,14 @@
|
|
|
| bool IsOOB() const { return priority_ == Message::kOOBPriority; }
|
|
|
| + bool RedirectToDeliveryFailurePort();
|
| +
|
| private:
|
| friend class MessageQueue;
|
|
|
| Message* next_;
|
| Dart_Port dest_port_;
|
| + Dart_Port delivery_failure_port_;
|
| uint8_t* data_;
|
| intptr_t len_;
|
| Priority priority_;
|
|
|