1// Copyright 2014 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#ifndef MOJO_SYSTEM_HANDLE_SIGNALS_STATE_H_ 6#define MOJO_SYSTEM_HANDLE_SIGNALS_STATE_H_ 7 8#include "base/macros.h" 9#include "mojo/public/c/system/types.h" 10#include "mojo/system/system_impl_export.h" 11 12namespace mojo { 13namespace system { 14 15// Just "add" some constructors and methods to the C struct 16// |MojoHandleSignalsState| (for convenience). This should add no overhead. 17struct MOJO_SYSTEM_IMPL_EXPORT HandleSignalsState 18 : public MojoHandleSignalsState { 19 HandleSignalsState() { 20 satisfied_signals = MOJO_HANDLE_SIGNAL_NONE; 21 satisfiable_signals = MOJO_HANDLE_SIGNAL_NONE; 22 } 23 HandleSignalsState(MojoHandleSignals satisfied, 24 MojoHandleSignals satisfiable) { 25 satisfied_signals = satisfied; 26 satisfiable_signals = satisfiable; 27 } 28 29 bool equals(const HandleSignalsState& other) const { 30 return satisfied_signals == other.satisfied_signals && 31 satisfiable_signals == other.satisfiable_signals; 32 } 33 34 bool satisfies(MojoHandleSignals signals) const { 35 return !!(satisfied_signals & signals); 36 } 37 38 bool can_satisfy(MojoHandleSignals signals) const { 39 return !!(satisfiable_signals & signals); 40 } 41 42 // (Copy and assignment allowed.) 43}; 44static_assert(sizeof(HandleSignalsState) == sizeof(MojoHandleSignalsState), 45 "HandleSignalsState should add no overhead"); 46 47} // namespace system 48} // namespace mojo 49 50#endif // MOJO_SYSTEM_HANDLE_SIGNALS_STATE_H_ 51