// Copyright 2013 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef COMPONENTS_SYNC_ENGINE_CANCELATION_SIGNAL_H_ #define COMPONENTS_SYNC_ENGINE_CANCELATION_SIGNAL_H_ #include "base/memory/raw_ptr.h" #include "base/synchronization/lock.h" namespace syncer { // This class is used to allow one thread to request that another abort and // return early. // // The signalling thread owns this class and my call Signal() at any time. // After that call, this class' IsSignalled() will always return true. The // intended use case is that the task intending to support early exit will // periodically check the value of IsSignalled() to see if it should return // early. // // The receiving task may also choose to register an observer whose // OnCancelationSignalReceived() method will be executed on the signaller's // thread when Signal() is called. This may be used for sending an early // Signal() to a WaitableEvent. The registration of the handler is necessarily // racy. If Signal() is executes before TryRegisterHandler(), // TryRegisterHandler() will not perform any registration and return false. That // function's caller must handle this case. // // This class supports only one handler, though it could easily support multiple // observers if we found a use case for such a feature. class CancelationSignal { … }; } // namespace syncer #endif // COMPONENTS_SYNC_ENGINE_CANCELATION_SIGNAL_H_