// Copyright 2017 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef MOJO_PUBLIC_CPP_SYSTEM_WAIT_SET_H_ #define MOJO_PUBLIC_CPP_SYSTEM_WAIT_SET_H_ #include <stddef.h> #include <stdint.h> #include "base/memory/scoped_refptr.h" #include "mojo/public/c/system/trap.h" #include "mojo/public/c/system/types.h" #include "mojo/public/cpp/system/handle.h" #include "mojo/public/cpp/system/system_export.h" namespace base { class WaitableEvent; } namespace mojo { // WaitSet provides an efficient means of blocking a sequence on any number of // events and Mojo handle state changes. // // Unlike WaitMany(), which incurs some extra setup cost for every call, a // WaitSet maintains some persistent accounting of the handles added or removed // from the set. A blocking wait operation (see the Wait() method below) can // then be performed multiple times for the same set of events and handles with // minimal additional setup per call. // // WaitSet is NOT thread-safe, so naturally handles and events may not be added // to or removed from the set while waiting. class MOJO_CPP_SYSTEM_EXPORT WaitSet { … }; } // namespace mojo #endif // MOJO_PUBLIC_CPP_SYSTEM_WAIT_SET_H_