/* 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_OPCONNIF_H
#define BLINKER_OPCONNIF_H

#include <string>

namespace Blinker {

class OpConn;

/// operator connection interface
class OpConnIf
{
public:
  /// constructor
  OpConnIf();

  /// virtual destructor
  virtual ~OpConnIf();

public:
  /**
   * @brief key command received on operator connection
   * @param[in] pConn operator connection object
   * @param[in] key key that was pressed
   */
  virtual void opConnRecvKey(OpConn *pConn, char key) = 0;

  /**
   * @brief play command received on operator connection
   * @param[in] pConn operator connection object
   * @param[in] sound name of sound to play
   */
  virtual void opConnRecvPlay(OpConn *pConn, const std::string &sound) = 0;

  /**
   * @brief operator connection is closed
   * @param[in] pConn operator connection object
   *
   * The connection may not be used for sending any more in this callback.
   */
  virtual void opConnClose(OpConn *pConn) = 0;
}; // class OpConnIf

} // namespace Blinker

#endif // #ifndef BLINKER_OPCONNIF_H

