// Copyright 2016 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.

// This file contains functions for waiting on multiple handles using wait sets.
//
// Note: This header should be compilable as C.

#ifndef MOJO_PUBLIC_C_SYSTEM_WAIT_SET_H_
#define MOJO_PUBLIC_C_SYSTEM_WAIT_SET_H_

#include <stdint.h>

#include "mojo/public/c/system/handle.h"
#include "mojo/public/c/system/macros.h"
#include "mojo/public/c/system/result.h"
#include "mojo/public/c/system/time.h"

// |MojoCreateWaitSetOptions|: Used to specify creation parameters for a wait
// set to |MojoCreateWaitSet()|.
//   |uint32_t struct_size|: Set to the size of the |MojoCreateWaitSetOptions|
//       struct. (Used to allow for future extensions.)
//   |MojoCreateWaitSetOptionsFlags flags|: Reserved for future use
//       |MOJO_CREATE_WAIT_SET_OPTIONS_FLAGS_NONE|: No flags, default mode.

typedef uint32_t MojoCreateWaitSetOptionsFlags;

struct MOJO_ALIGNAS(8) MojoCreateWaitSetOptions {
  uint32_t struct_size;
  MojoCreateWaitSetOptionsFlags flags;
};
MOJO_STATIC_ASSERT(sizeof(MojoCreateWaitSetOptions) == 8,
                   "MojoCreateWaitSetOptions has wrong size");

// |MojoWaitSetAddOptions|: Used to specify parameters in adding an entry to a
// wait set with |MojoWaitSetAdd()|.
//   |uint32_t struct_size|: Set to the size of the |MojoWaitSetAddOptions|
//       struct. (Used to allow for future extensions.)
//   |MojoWaitSetAddOptionsFlags flags|: Reserved for future use.
//       |MOJO_WAIT_SET_ADD_OPTIONS_FLAGS_NONE|: No flags, default mode.

typedef uint32_t MojoWaitSetAddOptionsFlags;

struct MOJO_ALIGNAS(8) MojoWaitSetAddOptions {
  uint32_t struct_size;
  MojoWaitSetAddOptionsFlags flags;
};
MOJO_STATIC_ASSERT(sizeof(MojoWaitSetAddOptions) == 8,
                   "MojoWaitSetAddOptions has wrong size");

// |MojoWaitSetResult|: Returned by |MojoWaitSetWait()| to indicate the state of
// entries. See |MojoWaitSetWait()| for the values of these fields.

struct MOJO_ALIGNAS(8) MojoWaitSetResult {
  uint64_t cookie;
  MojoResult wait_result;
  uint32_t reserved;
  MojoHandleSignals satisfied_signals;
  MojoHandleSignals satisfiable_signals;
};
MOJO_STATIC_ASSERT(sizeof(MojoWaitSetResult) == 24,
                   "MojoWaitSetResult has wrong size");

MOJO_BEGIN_EXTERN_C

// |MojoCreateWaitSet()|: Creates a new wait set.
//
// A wait set is an object that can be used to wait for a set of handles to
// satisfy some set of signals simultaneously.
//
// If |options| is null, the default options will be used.
//
// Returns:
//   |MOJO_RESULT_OK| if a wait set was successfully created. On success,
//       |*handle| will be the handle of the wait set.
//   |MOJO_RESULT_INVALID_ARGUMENT| if some argument was invalid (e.g.,
//       |options| is non null and |*options| is invalid).
//   |MOJO_RESULT_RESOURCE_EXHAUSTED| if a process/system/quota/etc. limit has
//       been reached.
MojoResult MojoCreateWaitSet(const struct MojoCreateWaitSetOptions*
                                 MOJO_RESTRICT options,  // Optional in.
                             MojoHandle* handle);        // Out.

// |MojoWaitSetAdd()|: Adds an entry to watch for to the wait set.
//
// An entry in a wait set is composed of a handle, a signal set, and a
// caller-specified cookie value. The cookie value must be unique across all
// entries in a particular wait set but is otherwise opaque and can be any value
// that is useful to the caller. If |options| is null the default options will
// be used.
//
// In all failure cases the wait set is unchanged.
//
// Returns:
//   |MOJO_RESULT_OK| if the handle was added to the wait set.
//   |MOJO_RESULT_INVALID_ARGUMENT| if |wait_set_handle| or |handle| do not
//       refer to valid handles, |wait_set_handle| is not a handle to a wait
//       set, |cookie| is not a unique value within this wait set, or |options|
//       is not null and |*options| is not a valid options structure.
//   |MOJO_RESULT_BUSY| if |wait_set_handle| or |handle| are currently in use in
//       some transaction.
//   |MOJO_RESULT_RESOURCE_EXHAUSTED| if the handle could not be added due to
//       hitting a system or quota limitation.
MojoResult MojoWaitSetAdd(const struct MojoWaitSetAddOptions* MOJO_RESTRICT
                              options,                 // Optional in.
                          MojoHandle wait_set_handle,  // In.
                          MojoHandle handle,           // In.
                          MojoHandleSignals signals,   // In.
                          uint64_t cookie);            // In.

// |MojoWaitSetRemove()|: Removes an entry from the wait set.
//
// Returns:
//   |MOJO_RESULT_OK| if the entry was successfully removed.
//   |MOJO_RESULT_INVALID_ARGUMENT| if |wait_set_handle| does not refer to a
//       valid wait set or if |cookie| does not identify an entry within the
//       wait set.
MojoResult MojoWaitSetRemove(MojoHandle wait_set_handle,  // In.
                             uint64_t cookie);            // In.

// |MojoWaitSetWait()|: Waits on all entries in the wait set for at least one of
// the following:
//   - At least one entry's handle satisfies a signal in that entry's signal
//     set.
//   - At least one entry's handle can never satisfy a signal in that entry's
//     signal set.
//   - |deadline| expires.
//   - The wait set is closed.
//
// On success, sets |*max_results| to the total number of possible results at
// the time of the call. Also returns information for up to |*num_results|
// entries in |*results| and sets |*num_results| to the number of entries the
// system populated. In particular, |results[0]|, ..., |results[*num_results-1]|
// will be populated as follows:
//   - |cookie| is the cookie value specified when the entry was added
//   - |wait_result| is set to one of the following:
//     - |MOJO_RESULT_OK| if the handle referred to by the entry satisfies one
//         or more of the signals in the entry
//     - |MOJO_RESULT_CANCELLED| if the handle referred to by the entry was
//         closed
//     - |MOJO_RESULT_BUSY| if the handle referred to by the entry is currently
//         in use in some transaction
//     - |MOJO_RESULT_FAILED_PRECONDITION| if it becomes impossible that the
//         handle referred to by the entry will ever satisfy any of entry's
//         signals
//   - |reserved| is set to 0
//
//   When the |wait_result| is |MOJO_RESULT_OK| or
//   |MOJO_RESULT_FAILED_PRECONDITION| the |satisfied_signals| and
//   |satisfiable_signals| entries are set to the signals the handle currently
//   satisfies and could possibly satisfy. When the |wait_result| is any other
//   value the |satisfied_signals| and |satisfiable_signals| entries are set to
//   |MOJO_HANDLE_SIGNALS_NONE|.
//
// On any result other than |MOJO_RESULT_OK|, |*num_results|, |*results| and
// |*max_results| are not modified.
//
// Returns:
//   |MOJO_RESULT_OK| if one or more entries in the wait set become satisfied or
//       unsatisfiable.
//   |MOJO_RESULT_INVALID_ARGUMENT| if |wait_set_handle| does not refer to a
//       valid wait set handle.
//   |MOJO_RESULT_CANCELLED| if |wait_set_handle| is closed during the wait.
//   |MOJO_RESULT_RESOURCE_EXHAUSTED| if a system/quota/etc. limit was reached.
//   |MOJO_RESULT_BUSY| if |wait_set_handle| is in use in some transaction. Note
//       that waiting on a wait set handle does not count as a transaction. It
//       is valid to call |MojoWaitSetWait()| on the same wait set handle
//       concurrently from different threads.
//   |MOJO_RESULT_DEADLINE_EXCEEDED| if the deadline is passed without any
//       entries in the wait set becoming satisfied or unsatisfiable.
MojoResult MojoWaitSetWait(
    MojoHandle wait_set_handle,                       // In.
    MojoDeadline deadline,                            // In.
    uint32_t* MOJO_RESTRICT num_results,              // In/out.
    struct MojoWaitSetResult* MOJO_RESTRICT results,  // Out.
    uint32_t* MOJO_RESTRICT max_results);             // Optional out.

MOJO_END_EXTERN_C

#endif  // MOJO_PUBLIC_C_SYSTEM_WAIT_SET_H_
