/* Blinker
   Copyright 2011-2019 Stefan Schuermans <stefan@blinkenarea.org>
   Copyleft GNU public license - http://www.gnu.org/copyleft/gpl.html
   a blinkenarea.org project */

#ifndef BLINKER_IOCALLEE_H
#define BLINKER_IOCALLEE_H

#include "Io.h"

namespace Blinker {

/// I/O callee interface (i.e. called on I/O event)
class IoCallee
{
public:
  /// constructor
  IoCallee();

  /// destructor
  virtual ~IoCallee();

public:
  /**
   * @brief callback when I/O object is readable
   * @param[in] io I/O object that is readable
   */
  virtual void ioReadCall(Io *io) = 0;

  /**
   * @brief callback when I/O object is writable
   * @param[in] io I/O object that is writable
   */
  virtual void ioWriteCall(Io *io) = 0;
}; // class IoCallee

} // namespace Blinker

#endif // #ifndef BLINKER_IOCALLEE_H

