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

Side by Side Diff: third_party/mojo/src/mojo/edk/system/message_pipe_dispatcher.cc

Issue 1310103002: Update mojo sdk to rev c02a28868825edfa57ab77947b8cb15e741c5598 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 3 months 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
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 #include "mojo/edk/system/message_pipe_dispatcher.h" 5 #include "mojo/edk/system/message_pipe_dispatcher.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "mojo/edk/system/configuration.h" 8 #include "mojo/edk/system/configuration.h"
9 #include "mojo/edk/system/local_message_pipe_endpoint.h" 9 #include "mojo/edk/system/local_message_pipe_endpoint.h"
10 #include "mojo/edk/system/memory.h" 10 #include "mojo/edk/system/memory.h"
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
98 98
99 MessagePipeDispatcher::MessagePipeDispatcher() : port_(kInvalidPort) { 99 MessagePipeDispatcher::MessagePipeDispatcher() : port_(kInvalidPort) {
100 } 100 }
101 101
102 MessagePipeDispatcher::~MessagePipeDispatcher() { 102 MessagePipeDispatcher::~MessagePipeDispatcher() {
103 // |Close()|/|CloseImplNoLock()| should have taken care of the pipe. 103 // |Close()|/|CloseImplNoLock()| should have taken care of the pipe.
104 DCHECK(!message_pipe_); 104 DCHECK(!message_pipe_);
105 } 105 }
106 106
107 MessagePipe* MessagePipeDispatcher::GetMessagePipeNoLock() const { 107 MessagePipe* MessagePipeDispatcher::GetMessagePipeNoLock() const {
108 lock().AssertAcquired(); 108 mutex().AssertHeld();
109 return message_pipe_.get(); 109 return message_pipe_.get();
110 } 110 }
111 111
112 unsigned MessagePipeDispatcher::GetPortNoLock() const { 112 unsigned MessagePipeDispatcher::GetPortNoLock() const {
113 lock().AssertAcquired(); 113 mutex().AssertHeld();
114 return port_; 114 return port_;
115 } 115 }
116 116
117 void MessagePipeDispatcher::CancelAllAwakablesNoLock() { 117 void MessagePipeDispatcher::CancelAllAwakablesNoLock() {
118 lock().AssertAcquired(); 118 mutex().AssertHeld();
119 message_pipe_->CancelAllAwakables(port_); 119 message_pipe_->CancelAllAwakables(port_);
120 } 120 }
121 121
122 void MessagePipeDispatcher::CloseImplNoLock() { 122 void MessagePipeDispatcher::CloseImplNoLock() {
123 lock().AssertAcquired(); 123 mutex().AssertHeld();
124 message_pipe_->Close(port_); 124 message_pipe_->Close(port_);
125 message_pipe_ = nullptr; 125 message_pipe_ = nullptr;
126 port_ = kInvalidPort; 126 port_ = kInvalidPort;
127 } 127 }
128 128
129 scoped_refptr<Dispatcher> 129 scoped_refptr<Dispatcher>
130 MessagePipeDispatcher::CreateEquivalentDispatcherAndCloseImplNoLock() { 130 MessagePipeDispatcher::CreateEquivalentDispatcherAndCloseImplNoLock() {
131 lock().AssertAcquired(); 131 mutex().AssertHeld();
132 132
133 // TODO(vtl): Currently, there are no options, so we just use 133 // TODO(vtl): Currently, there are no options, so we just use
134 // |kDefaultCreateOptions|. Eventually, we'll have to duplicate the options 134 // |kDefaultCreateOptions|. Eventually, we'll have to duplicate the options
135 // too. 135 // too.
136 scoped_refptr<MessagePipeDispatcher> rv = Create(kDefaultCreateOptions); 136 scoped_refptr<MessagePipeDispatcher> rv = Create(kDefaultCreateOptions);
137 rv->Init(message_pipe_, port_); 137 rv->Init(message_pipe_, port_);
138 message_pipe_ = nullptr; 138 message_pipe_ = nullptr;
139 port_ = kInvalidPort; 139 port_ = kInvalidPort;
140 return scoped_refptr<Dispatcher>(rv.get()); 140 return scoped_refptr<Dispatcher>(rv.get());
141 } 141 }
142 142
143 MojoResult MessagePipeDispatcher::WriteMessageImplNoLock( 143 MojoResult MessagePipeDispatcher::WriteMessageImplNoLock(
144 UserPointer<const void> bytes, 144 UserPointer<const void> bytes,
145 uint32_t num_bytes, 145 uint32_t num_bytes,
146 std::vector<DispatcherTransport>* transports, 146 std::vector<DispatcherTransport>* transports,
147 MojoWriteMessageFlags flags) { 147 MojoWriteMessageFlags flags) {
148 DCHECK(!transports || 148 DCHECK(!transports ||
149 (transports->size() > 0 && 149 (transports->size() > 0 &&
150 transports->size() <= GetConfiguration().max_message_num_handles)); 150 transports->size() <= GetConfiguration().max_message_num_handles));
151 151
152 lock().AssertAcquired(); 152 mutex().AssertHeld();
153 153
154 if (num_bytes > GetConfiguration().max_message_num_bytes) 154 if (num_bytes > GetConfiguration().max_message_num_bytes)
155 return MOJO_RESULT_RESOURCE_EXHAUSTED; 155 return MOJO_RESULT_RESOURCE_EXHAUSTED;
156 156
157 return message_pipe_->WriteMessage(port_, bytes, num_bytes, transports, 157 return message_pipe_->WriteMessage(port_, bytes, num_bytes, transports,
158 flags); 158 flags);
159 } 159 }
160 160
161 MojoResult MessagePipeDispatcher::ReadMessageImplNoLock( 161 MojoResult MessagePipeDispatcher::ReadMessageImplNoLock(
162 UserPointer<void> bytes, 162 UserPointer<void> bytes,
163 UserPointer<uint32_t> num_bytes, 163 UserPointer<uint32_t> num_bytes,
164 DispatcherVector* dispatchers, 164 DispatcherVector* dispatchers,
165 uint32_t* num_dispatchers, 165 uint32_t* num_dispatchers,
166 MojoReadMessageFlags flags) { 166 MojoReadMessageFlags flags) {
167 lock().AssertAcquired(); 167 mutex().AssertHeld();
168 return message_pipe_->ReadMessage(port_, bytes, num_bytes, dispatchers, 168 return message_pipe_->ReadMessage(port_, bytes, num_bytes, dispatchers,
169 num_dispatchers, flags); 169 num_dispatchers, flags);
170 } 170 }
171 171
172 HandleSignalsState MessagePipeDispatcher::GetHandleSignalsStateImplNoLock() 172 HandleSignalsState MessagePipeDispatcher::GetHandleSignalsStateImplNoLock()
173 const { 173 const {
174 lock().AssertAcquired(); 174 mutex().AssertHeld();
175 return message_pipe_->GetHandleSignalsState(port_); 175 return message_pipe_->GetHandleSignalsState(port_);
176 } 176 }
177 177
178 MojoResult MessagePipeDispatcher::AddAwakableImplNoLock( 178 MojoResult MessagePipeDispatcher::AddAwakableImplNoLock(
179 Awakable* awakable, 179 Awakable* awakable,
180 MojoHandleSignals signals, 180 MojoHandleSignals signals,
181 uint32_t context, 181 uint32_t context,
182 HandleSignalsState* signals_state) { 182 HandleSignalsState* signals_state) {
183 lock().AssertAcquired(); 183 mutex().AssertHeld();
184 return message_pipe_->AddAwakable(port_, awakable, signals, context, 184 return message_pipe_->AddAwakable(port_, awakable, signals, context,
185 signals_state); 185 signals_state);
186 } 186 }
187 187
188 void MessagePipeDispatcher::RemoveAwakableImplNoLock( 188 void MessagePipeDispatcher::RemoveAwakableImplNoLock(
189 Awakable* awakable, 189 Awakable* awakable,
190 HandleSignalsState* signals_state) { 190 HandleSignalsState* signals_state) {
191 lock().AssertAcquired(); 191 mutex().AssertHeld();
192 message_pipe_->RemoveAwakable(port_, awakable, signals_state); 192 message_pipe_->RemoveAwakable(port_, awakable, signals_state);
193 } 193 }
194 194
195 void MessagePipeDispatcher::StartSerializeImplNoLock( 195 void MessagePipeDispatcher::StartSerializeImplNoLock(
196 Channel* channel, 196 Channel* channel,
197 size_t* max_size, 197 size_t* max_size,
198 size_t* max_platform_handles) { 198 size_t* max_platform_handles) {
199 DCHECK(HasOneRef()); // Only one ref => no need to take the lock. 199 DCHECK(HasOneRef()); // Only one ref => no need to take the lock.
200 return message_pipe_->StartSerialize(port_, channel, max_size, 200 return message_pipe_->StartSerialize(port_, channel, max_size,
201 max_platform_handles); 201 max_platform_handles);
(...skipping 17 matching lines...) Expand all
219 219
220 MessagePipeDispatcherTransport::MessagePipeDispatcherTransport( 220 MessagePipeDispatcherTransport::MessagePipeDispatcherTransport(
221 DispatcherTransport transport) 221 DispatcherTransport transport)
222 : DispatcherTransport(transport) { 222 : DispatcherTransport(transport) {
223 DCHECK_EQ(message_pipe_dispatcher()->GetType(), 223 DCHECK_EQ(message_pipe_dispatcher()->GetType(),
224 Dispatcher::Type::MESSAGE_PIPE); 224 Dispatcher::Type::MESSAGE_PIPE);
225 } 225 }
226 226
227 } // namespace system 227 } // namespace system
228 } // namespace mojo 228 } // namespace mojo
OLDNEW
« no previous file with comments | « third_party/mojo/src/mojo/edk/system/message_pipe_dispatcher.h ('k') | third_party/mojo/src/mojo/edk/system/mutex.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698