| // Copyright 2014 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef MOJO_SYSTEM_HANDLE_SIGNALS_STATE_H_ |
| #define MOJO_SYSTEM_HANDLE_SIGNALS_STATE_H_ |
| |
| #include "base/macros.h" |
| #include "mojo/public/c/system/types.h" |
| #include "mojo/system/system_impl_export.h" |
| |
| namespace mojo { |
| namespace system { |
| |
| // Just "add" some constructors and methods to the C struct |
| // |MojoHandleSignalsState| (for convenience). This should add no overhead. |
| struct MOJO_SYSTEM_IMPL_EXPORT HandleSignalsState |
| : public MojoHandleSignalsState { |
| HandleSignalsState() { |
| satisfied_signals = MOJO_HANDLE_SIGNAL_NONE; |
| satisfiable_signals = MOJO_HANDLE_SIGNAL_NONE; |
| } |
| HandleSignalsState(MojoHandleSignals satisfied, |
| MojoHandleSignals satisfiable) { |
| satisfied_signals = satisfied; |
| satisfiable_signals = satisfiable; |
| } |
| |
| bool equals(const HandleSignalsState& other) const { |
| return satisfied_signals == other.satisfied_signals && |
| satisfiable_signals == other.satisfiable_signals; |
| } |
| |
| bool satisfies(MojoHandleSignals signals) const { |
| return !!(satisfied_signals & signals); |
| } |
| |
| bool can_satisfy(MojoHandleSignals signals) const { |
| return !!(satisfiable_signals & signals); |
| } |
| |
| // (Copy and assignment allowed.) |
| }; |
| COMPILE_ASSERT(sizeof(HandleSignalsState) == sizeof(MojoHandleSignalsState), |
| HandleSignalsState_should_add_no_overhead); |
| |
| } // namespace system |
| } // namespace mojo |
| |
| #endif // MOJO_SYSTEM_HANDLE_SIGNALS_STATE_H_ |