Ricezione di eventi tramite un'interfaccia

1

Quindi sto scrivendo un gioco e utilizzo il framework Google Play Services per inviare e ricevere dati.

Devo implementare l'interfaccia IRealTimeEventListener e sovrascrivere le funzioni seguenti per ricevere i dati della rete in entrata.

class EventHandler : public gpg::IRealTimeEventListener
private:

  //IRealTimeEventListener
  void OnRoomStatusChanged(gpg::RealTimeRoom const &room) override;
  void OnConnectedSetChanged(gpg::RealTimeRoom const &room) override;
  void OnP2PConnected(gpg::RealTimeRoom const &room, gpg::MultiplayerParticipant const &participant) override;
  void OnP2PDisconnected(gpg::RealTimeRoom const &room, gpg::MultiplayerParticipant const &participant) override;
  void OnParticipantStatusChanged(gpg::RealTimeRoom const &room, gpg::MultiplayerParticipant const &participant) override;
  void OnDataReceived(gpg::RealTimeRoom const &room, gpg::MultiplayerParticipant const &from_participant, std::vector<uint8_t> data, bool is_reliable)
      override;

La mia domanda è: come viene implementata questa funzionalità?

Ho usato il modello Observer prima, il Subject chiamerebbe una raccolta di registrati Observers e passa un evento MA devo registrare il Observer prima con Subject .

Nel caso della libreria Google Play Services c'è NO Registration ho semplicemente implementato l'interfaccia e iniziato a ricevere i dati.

gpg.framework / intestazioni / i_real_time_event_listener.h

#ifndef GPG_I_REAL_TIME_EVENT_LISTENER_H_
#define GPG_I_REAL_TIME_EVENT_LISTENER_H_

#include <vector>
#include "gpg/multiplayer_participant.h"
#include "gpg/real_time_room.h"

namespace gpg {

class GPG_EXPORT IRealTimeEventListener {
 public:
  virtual ~IRealTimeEventListener() {}
  virtual void OnRoomStatusChanged(RealTimeRoom const &room) = 0;
  virtual void OnConnectedSetChanged(RealTimeRoom const &room) = 0;
  virtual void OnP2PConnected(RealTimeRoom const &room, MultiplayerParticipant const &participant) = 0;
  virtual void OnP2PDisconnected(RealTimeRoom const &room, MultiplayerParticipant const &participant) = 0;
  virtual void OnParticipantStatusChanged(RealTimeRoom const &room, MultiplayerParticipant const &participant) = 0;
  virtual void OnDataReceived(RealTimeRoom const &room, MultiplayerParticipant const &from_participant, std::vector<uint8_t> data, bool is_reliable) = 0;
};

}  // namespace gpg

#endif  // GPG_I_REAL_TIME_EVENT_LISTENER_H_

Come possono le funzioni dell'interfaccia essere chiamate dalla libreria quando il mio gestore di eventi non si registra con un oggetto all'interno della libreria?

    
posta David 20.01.2017 - 01:32
fonte

0 risposte

Leggi altre domande sui tag