edu.whs.spin2018.baoapp.service

## Interface BaoServiceInterface

- All Known Subinterfaces:
    BaseInteractorInterface, LobbyRemoteDataSource, MehrspielerRemoteDataSource, SpielbrettRemoteDataSource, SpieleinstellungenRemoteDataSource
  All Known Implementing Classes:
    BaoService, LobbyServiceInteractor, MehrspielerServiceInteractor, ServiceInteractor, SpielbrettServiceInteractor, SpieleinstellungenServiceInteractor

      public interface BaoServiceInterface

  Definiert die Methoden mit dem Websocket interagiert.

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `entferneListener(java.lang.String event, io.socket.emitter.Emitter.Listener listener)` Entfernt einen zuvor registrierten Listener
    `void` | `raumBetreten(java.lang.String raum)` Betritt einen Raum auf dem Server.
    `void` | `raumVerlassen(java.lang.String raum)` Verlaesst einen Raum.
    `void` | `registriereBenutzerListeErhaltenListener(io.socket.emitter.Emitter.Listener listener)` Registriert einen neuen Listener fuer das "zeigeUserImRaum" Event am Websocket.
    `void` | `registriereBenutzerTrittRaumBeiListener(io.socket.emitter.Emitter.Listener listener)` Registriert einen neuen Listener fuer das "userTrittRaumBei" Event am Websocket.
    `void` | `registriereBenutzerVerlaesstRaumListener(io.socket.emitter.Emitter.Listener listener)` Registriert einen neuen Listener fuer das "userVerlaesstRaum" Event am Websocket.
    `void` | `registriereNachrichtenListener(io.socket.emitter.Emitter.Listener listener)` Registriert einen neuen Listener fuer das "nachricht" Event am Websocket.
    `void` | `registriereVerbundenListener(io.socket.emitter.Emitter.Listener listener)` Registriert einen neuen Listener fuer das "verbunden" Event am Websocket.
    `void` | `sendeBroadcast(java.lang.String inhalt, java.lang.String typ, java.lang.String raum)` Sendet wie sendeNachricht eine Nachricht an den Server, aber nicht nur an einen Benutzer als Empfaenger, sondern an alle Benutzer, die sich in einem angegebenen Raum befinden.
    `void` | `sendeNachricht(java.lang.String inhalt, java.lang.String typ, java.lang.String empfaengerUUID)` Sendet eine Nachricht an genau einen Empfaenger, der auch mit dem Server verbunden ist.
    `void` | `trennen()` Trennt die Verbindung zum Server.
    `void` | `verbinden(java.lang.String benutzername, java.lang.String uuid)` Baut die Verbindung zum Server auf
    `void` | `zeigeBenutzerImRaum(java.lang.String raum)` Fordert eine Liste mit allen Clients aus einem Raum auf dem Server an.

- - ### Method Detail

    - #### verbinden

          void verbinden(java.lang.String benutzername,
                         java.lang.String uuid)

      Baut die Verbindung zum Server auf

    - #### trennen

          void trennen()

      Trennt die Verbindung zum Server.

    - #### raumBetreten

          void raumBetreten(java.lang.String raum)

      Betritt einen Raum auf dem Server. Broadcasts in diesem Raum koennen danach empfangen werden. Andere Raeume werden nicht automatisch verlassen.
      Parameters:
        `raum` - Raum, der betreten wird

    - #### raumVerlassen

          void raumVerlassen(java.lang.String raum)

      Verlaesst einen Raum. Broadcasts in diesem Raum werden danach nicht mehr empfangen.
      Parameters:
        `raum` - - Raum der verlassen werden soll

    - #### zeigeBenutzerImRaum

          void zeigeBenutzerImRaum(java.lang.String raum)

      Fordert eine Liste mit allen Clients aus einem Raum auf dem Server an.

      Wenn der Server diese Anfrage beantwortet, wird an alle, die Broadcasts vom BaoService erhalten, ein Broadcast gesendet. In dem Intent, den man erhaelt ist unter "inhalt" ein JSONObject (data). In data ist unter dem Extra "inhalt" ein JSONArray (benutzerArray). In jedem Feld von benutzerArray ist ein JSONObject (jsonUser). Jeder jsonUser hat die Felder "benutzername" und "UUID".

      Parameters:
        `raum` - Der Raum, dessen Clients gesendet werden sollen.

    - #### sendeNachricht

          void sendeNachricht(java.lang.String inhalt,
                              java.lang.String typ,
                              java.lang.String empfaengerUUID)

      Sendet eine Nachricht an genau einen Empfaenger, der auch mit dem Server verbunden ist.
      Parameters:
        `inhalt` - Inhalt der Nachricht
        `typ` - Eine Beschreibung der Nachricht (z.B. "Spielzug")
        `empfaengerUUID` - UUID, ueber die der Empfaenger identifiziert werden kann.

    - #### sendeBroadcast

          void sendeBroadcast(java.lang.String inhalt,
                              java.lang.String typ,
                              java.lang.String raum)

      Sendet wie sendeNachricht eine Nachricht an den Server, aber nicht nur an einen Benutzer als Empfaenger, sondern an alle Benutzer, die sich in einem angegebenen Raum befinden.
      Parameters:
        `inhalt` - Inhalt der Nachricht
        `typ` - Beschreibung der Nachricht
        `raum` - Alle Benutzer dieses Raumes erhalten die Nachricht.

    - #### registriereNachrichtenListener

          void registriereNachrichtenListener(io.socket.emitter.Emitter.Listener listener)

      Registriert einen neuen Listener fuer das "nachricht" Event am Websocket.
      Parameters:
        `listener` - - zu registrierender Listener

    - #### registriereBenutzerVerlaesstRaumListener

          void registriereBenutzerVerlaesstRaumListener(io.socket.emitter.Emitter.Listener listener)

      Registriert einen neuen Listener fuer das "userVerlaesstRaum" Event am Websocket.
      Parameters:
        `listener` - - zu registrierender Listener

    - #### registriereBenutzerTrittRaumBeiListener

          void registriereBenutzerTrittRaumBeiListener(io.socket.emitter.Emitter.Listener listener)

      Registriert einen neuen Listener fuer das "userTrittRaumBei" Event am Websocket.
      Parameters:
        `listener` - - zu registrierender Listener

    - #### registriereVerbundenListener

          void registriereVerbundenListener(io.socket.emitter.Emitter.Listener listener)

      Registriert einen neuen Listener fuer das "verbunden" Event am Websocket.
      Parameters:
        `listener` - - zu registrierender Listener

    - #### registriereBenutzerListeErhaltenListener

          void registriereBenutzerListeErhaltenListener(io.socket.emitter.Emitter.Listener listener)

      Registriert einen neuen Listener fuer das "zeigeUserImRaum" Event am Websocket.
      Parameters:
        `listener` - - zu registrierender Listener

    - #### entferneListener

          void entferneListener(java.lang.String event,
                                io.socket.emitter.Emitter.Listener listener)

      Entfernt einen zuvor registrierten Listener
      Parameters:
        `event` - - Event, auf das der Listener registriert wurde
        `listener` - - Listener, der entfernt werden soll