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 3 // found in the LICENSE file. 4 5 #include "mojo/system/simple_dispatcher.h" 6 7 #include "base/logging.h" 8 9 namespace mojo { 10 namespace system { 11 SimpleDispatcher()12SimpleDispatcher::SimpleDispatcher() { 13 } 14 ~SimpleDispatcher()15SimpleDispatcher::~SimpleDispatcher() { 16 } 17 StateChangedNoLock()18void SimpleDispatcher::StateChangedNoLock() { 19 lock().AssertAcquired(); 20 waiter_list_.AwakeWaitersForStateChange(SatisfiedFlagsNoLock(), 21 SatisfiableFlagsNoLock()); 22 } 23 CancelAllWaitersNoLock()24void SimpleDispatcher::CancelAllWaitersNoLock() { 25 lock().AssertAcquired(); 26 waiter_list_.CancelAllWaiters(); 27 } 28 AddWaiterImplNoLock(Waiter * waiter,MojoWaitFlags flags,MojoResult wake_result)29MojoResult SimpleDispatcher::AddWaiterImplNoLock(Waiter* waiter, 30 MojoWaitFlags flags, 31 MojoResult wake_result) { 32 lock().AssertAcquired(); 33 34 if ((flags & SatisfiedFlagsNoLock())) 35 return MOJO_RESULT_ALREADY_EXISTS; 36 if (!(flags & SatisfiableFlagsNoLock())) 37 return MOJO_RESULT_FAILED_PRECONDITION; 38 39 waiter_list_.AddWaiter(waiter, flags, wake_result); 40 return MOJO_RESULT_OK; 41 } 42 RemoveWaiterImplNoLock(Waiter * waiter)43void SimpleDispatcher::RemoveWaiterImplNoLock(Waiter* waiter) { 44 lock().AssertAcquired(); 45 waiter_list_.RemoveWaiter(waiter); 46 } 47 48 } // namespace system 49 } // namespace mojo 50