Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(618)

Side by Side Diff: mojo/edk/system/ports/node.h

Issue 2466993004: Remove use of std::function from Mojo internals (Closed)
Patch Set: . Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « mojo/edk/system/ports/message_queue.cc ('k') | mojo/edk/system/ports/node.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef MOJO_EDK_SYSTEM_PORTS_NODE_H_ 5 #ifndef MOJO_EDK_SYSTEM_PORTS_NODE_H_
6 #define MOJO_EDK_SYSTEM_PORTS_NODE_H_ 6 #define MOJO_EDK_SYSTEM_PORTS_NODE_H_
7 7
8 #include <stddef.h> 8 #include <stddef.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 10
(...skipping 26 matching lines...) Expand all
37 ERROR_PORT_CANNOT_SEND_PEER = -15, 37 ERROR_PORT_CANNOT_SEND_PEER = -15,
38 ERROR_NOT_IMPLEMENTED = -100, 38 ERROR_NOT_IMPLEMENTED = -100,
39 }; 39 };
40 40
41 struct PortStatus { 41 struct PortStatus {
42 bool has_messages; 42 bool has_messages;
43 bool receiving_messages; 43 bool receiving_messages;
44 bool peer_closed; 44 bool peer_closed;
45 }; 45 };
46 46
47 class MessageFilter;
47 class NodeDelegate; 48 class NodeDelegate;
48 49
49 class Node { 50 class Node {
50 public: 51 public:
51 enum class ShutdownPolicy { 52 enum class ShutdownPolicy {
52 DONT_ALLOW_LOCAL_PORTS, 53 DONT_ALLOW_LOCAL_PORTS,
53 ALLOW_LOCAL_PORTS, 54 ALLOW_LOCAL_PORTS,
54 }; 55 };
55 56
56 // Does not take ownership of the delegate. 57 // Does not take ownership of the delegate.
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
100 int ClosePort(const PortRef& port_ref); 101 int ClosePort(const PortRef& port_ref);
101 102
102 // Returns the current status of the port. 103 // Returns the current status of the port.
103 int GetStatus(const PortRef& port_ref, PortStatus* port_status); 104 int GetStatus(const PortRef& port_ref, PortStatus* port_status);
104 105
105 // Returns the next available message on the specified port or returns a null 106 // Returns the next available message on the specified port or returns a null
106 // message if there are none available. Returns ERROR_PORT_PEER_CLOSED to 107 // message if there are none available. Returns ERROR_PORT_PEER_CLOSED to
107 // indicate that this port's peer has closed. In such cases GetMessage may 108 // indicate that this port's peer has closed. In such cases GetMessage may
108 // be called until it yields a null message, indicating that no more messages 109 // be called until it yields a null message, indicating that no more messages
109 // may be read from the port. 110 // may be read from the port.
110 int GetMessage(const PortRef& port_ref, ScopedMessage* message); 111 //
111 112 // If |filter| is non-null, the next available message is returned only if it
112 // Like GetMessage, but the caller may optionally supply a selector function 113 // is matched by the filter. If the provided filter does not match the next
113 // that decides whether or not to return the message. If |selector| is a 114 // available message, GetMessage() behaves as if there is no message
114 // nullptr, then GetMessageIf acts just like GetMessage. The |selector| may 115 // available. Ownership of |filter| is not taken, and it must outlive the
115 // not call any Node methods. 116 // extent of this call.
116 int GetMessageIf(const PortRef& port_ref, 117 int GetMessage(const PortRef& port_ref,
117 std::function<bool(const Message&)> selector, 118 ScopedMessage* message,
118 ScopedMessage* message); 119 MessageFilter* filter);
119 120
120 // Sends a message from the specified port to its peer. Note that the message 121 // Sends a message from the specified port to its peer. Note that the message
121 // notification may arrive synchronously (via PortStatusChanged() on the 122 // notification may arrive synchronously (via PortStatusChanged() on the
122 // delegate) if the peer is local to this Node. 123 // delegate) if the peer is local to this Node.
123 int SendMessage(const PortRef& port_ref, ScopedMessage message); 124 int SendMessage(const PortRef& port_ref, ScopedMessage message);
124 125
125 // Corresponding to NodeDelegate::ForwardMessage. 126 // Corresponding to NodeDelegate::ForwardMessage.
126 int AcceptMessage(ScopedMessage message); 127 int AcceptMessage(ScopedMessage message);
127 128
128 // Called to merge two ports with each other. If you have two independent 129 // Called to merge two ports with each other. If you have two independent
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
220 std::unordered_map<PortName, scoped_refptr<Port>> ports_; 221 std::unordered_map<PortName, scoped_refptr<Port>> ports_;
221 222
222 DISALLOW_COPY_AND_ASSIGN(Node); 223 DISALLOW_COPY_AND_ASSIGN(Node);
223 }; 224 };
224 225
225 } // namespace ports 226 } // namespace ports
226 } // namespace edk 227 } // namespace edk
227 } // namespace mojo 228 } // namespace mojo
228 229
229 #endif // MOJO_EDK_SYSTEM_PORTS_NODE_H_ 230 #endif // MOJO_EDK_SYSTEM_PORTS_NODE_H_
OLDNEW
« no previous file with comments | « mojo/edk/system/ports/message_queue.cc ('k') | mojo/edk/system/ports/node.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698