This file is indexed.

/usr/include/ola/io/SelectServerInterface.h is in libola-dev 0.9.8-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
/*
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 *
 * SelectServerInterface.h
 * An interface to a SelectServer that enforces clean separation.
 * Copyright (C) 2010 Simon Newton
 */

#ifndef INCLUDE_OLA_IO_SELECTSERVERINTERFACE_H_
#define INCLUDE_OLA_IO_SELECTSERVERINTERFACE_H_

#include <ola/Callback.h>
#include <ola/Clock.h>
#include <ola/io/Descriptor.h>
#include <ola/thread/SchedulingExecutorInterface.h>

namespace ola {
namespace io {

/**
 * @brief The interface for the SelectServer.
 *
 * The SelectServerInterface is used to register Descriptors for events. It's
 * the core of the event manager system, and should really be called IOManager.
 *
 * SelectServerInterface implementations are required to be reentrant.
 * Descriptors may be added / removed and timeouts set / canceled from within
 * callbacks executed by the SelectServer.
 */
class SelectServerInterface: public ola::thread::SchedulingExecutorInterface {
 public :
  SelectServerInterface() {}
  virtual ~SelectServerInterface() {}

  /**
   * @brief Register a ReadFileDescriptor for read-events.
   * @param descriptor the ReadFileDescriptor to add.
   * @returns true if the descriptor was added, false if the descriptor was
   *   previously added.
   *
   * When the descriptor is ready for reading, PerformRead() will be called.
   */
  virtual bool AddReadDescriptor(class ReadFileDescriptor *descriptor) = 0;

  /**
   * @brief Register a ConnectedDescriptor for read-events.
   * @param descriptor the ConnectedDescriptor to add.
   * @param delete_on_close if true, ownership of the ConnectedDescriptor is
   *   transferred to the SelectServer.
   * @returns true if the descriptor was added, false if the descriptor was
   *   previously added.
   *
   * When the descriptor is ready for reading, PerformRead() will be called.
   * Prior to PerformRead(), IsClosed() is called. If this returns true, and
   * delete_on_close was set, the descriptor will be deleted.
   */
  virtual bool AddReadDescriptor(class ConnectedDescriptor *descriptor,
                                 bool delete_on_close = false) = 0;

  /**
   * @brief Remove a RemoveReadDescriptor for read-events.
   * @param descriptor the descriptor to remove.
   *
   * @warning Descriptors must be removed from the SelectServer before they are
   * closed. Not doing so will result in hard to debug failures.
   */
  virtual void RemoveReadDescriptor(
      class ReadFileDescriptor *descriptor) = 0;

  /**
   * @brief Remove a ConnectedDescriptor for read-events.
   * @param descriptor the descriptor to remove.
   *
   * @warning Descriptors must be removed from the SelectServer before they are
   * closed. Not doing so will result in hard to debug failures.
   */
  virtual void RemoveReadDescriptor(class ConnectedDescriptor *descriptor) = 0;

  /**
   * @brief Register a WriteFileDescriptor for write-events.
   * @param descriptor the WriteFileDescriptor to add.
   *
   * When the descriptor is writeable, PerformWrite() is called.
   */
  virtual bool AddWriteDescriptor(
      class WriteFileDescriptor *descriptor) = 0;

  /**
   * @brief Remove a WriteFileDescriptor for write-events.
   * @param descriptor the descriptor to remove.
   *
   * @warning Descriptors must be removed from the SelectServer before they are
   * closed. Not doing so will result in hard to debug failures.
   */
  virtual void RemoveWriteDescriptor(
      class WriteFileDescriptor *descriptor) = 0;

  virtual ola::thread::timeout_id RegisterRepeatingTimeout(
      unsigned int ms,
      Callback0<bool> *closure) = 0;
  virtual ola::thread::timeout_id RegisterRepeatingTimeout(
      const ola::TimeInterval &interval,
      ola::Callback0<bool> *closure) = 0;

  virtual ola::thread::timeout_id RegisterSingleTimeout(
      unsigned int ms,
      SingleUseCallback0<void> *closure) = 0;
  virtual ola::thread::timeout_id RegisterSingleTimeout(
      const ola::TimeInterval &interval,
      SingleUseCallback0<void> *closure) = 0;

  virtual void RemoveTimeout(ola::thread::timeout_id id) = 0;

  /**
   * @brief The time when this SelectServer was woken up.
   * @returns The TimeStamp of when the SelectServer was woken up.
   *
   * If running within the same thread as the SelectServer, this is a efficient
   * way to get the current time.
   */
  virtual const TimeStamp *WakeUpTime() const = 0;
};
}  // namespace io
}  // namespace ola
#endif  // INCLUDE_OLA_IO_SELECTSERVERINTERFACE_H_