qmlfrontend/net_session.h
changeset 15047 773beead236f
parent 15039 a4a058dcbbd6
child 15078 fb7a9b0119d3
equal deleted inserted replaced
15046:0730c68fdf97 15047:773beead236f
     4 #include <QSharedPointer>
     4 #include <QSharedPointer>
     5 #include <QSslSocket>
     5 #include <QSslSocket>
     6 #include <QStringList>
     6 #include <QStringList>
     7 #include <QUrl>
     7 #include <QUrl>
     8 
     8 
       
     9 class PlayersListModel;
       
    10 class RoomsListModel;
     9 class NetSession : public QObject {
    11 class NetSession : public QObject {
    10   Q_OBJECT
    12   Q_OBJECT
    11 
    13 
    12   const int cMinServerVersion = 3;
    14   const int cMinServerVersion = 3;
    13   const int cProtocolVersion = 60;
    15   const int cProtocolVersion = 60;
    16   Q_PROPERTY(QUrl url READ url WRITE setUrl NOTIFY urlChanged)
    18   Q_PROPERTY(QUrl url READ url WRITE setUrl NOTIFY urlChanged)
    17   Q_PROPERTY(QAbstractSocket::SocketState state READ state NOTIFY stateChanged)
    19   Q_PROPERTY(QAbstractSocket::SocketState state READ state NOTIFY stateChanged)
    18   Q_PROPERTY(QString nickname READ nickname WRITE setNickname NOTIFY nicknameChanged)
    20   Q_PROPERTY(QString nickname READ nickname WRITE setNickname NOTIFY nicknameChanged)
    19   Q_PROPERTY(QString password READ password WRITE setPassword NOTIFY passwordChanged)
    21   Q_PROPERTY(QString password READ password WRITE setPassword NOTIFY passwordChanged)
    20   Q_PROPERTY(SessionState sessionState READ sessionState NOTIFY sessionStateChanged)
    22   Q_PROPERTY(SessionState sessionState READ sessionState NOTIFY sessionStateChanged)
       
    23   Q_PROPERTY(QString room READ room NOTIFY roomChanged)
    21   // clang-format on
    24   // clang-format on
    22 
    25 
    23  public:
    26  public:
    24   enum SessionState { NotConnected, Login, Lobby, Room, Game };
    27   enum SessionState { NotConnected, Login, Lobby, Room, Game };
    25   Q_ENUMS(SessionState)
    28   Q_ENUMS(SessionState)
    26 
    29 
    27   explicit NetSession(QObject *parent = nullptr);
    30   explicit NetSession(QObject *parent = nullptr);
       
    31   ~NetSession() override;
    28 
    32 
    29   QUrl url() const;
    33   QUrl url() const;
    30   QAbstractSocket::SocketState state() const;
    34   QAbstractSocket::SocketState state() const;
    31 
    35 
    32   Q_INVOKABLE void open();
       
    33 
       
    34   QString nickname() const;
    36   QString nickname() const;
    35   QString password() const;
    37   QString password() const;
    36   SessionState sessionState() const;
    38   SessionState sessionState() const;
       
    39   QString room() const;
    37 
    40 
    38  public slots:
    41  public slots:
       
    42   void open();
       
    43   void close();
       
    44 
    39   void setUrl(const QUrl &url);
    45   void setUrl(const QUrl &url);
    40   void setNickname(const QString &nickname);
    46   void setNickname(const QString &nickname);
    41   void setPassword(const QString &password);
    47   void setPassword(const QString &password);
    42   void close();
       
    43 
    48 
    44  signals:
    49  signals:
    45   void urlChanged(const QUrl url);
    50   void urlChanged(const QUrl url);
    46   void stateChanged(QAbstractSocket::SocketState state);
    51   void stateChanged(QAbstractSocket::SocketState state);
    47   void nicknameChanged(const QString &nickname);
    52   void nicknameChanged(const QString &nickname);
    48   void passwordChanged(const QString &password);
    53   void passwordChanged(const QString &password);
    49   void sessionStateChanged(SessionState sessionState);
    54   void sessionStateChanged(SessionState sessionState);
    50   void warning(const QString &message);
    55   void warning(const QString &message);
    51   void error(const QString &message);
    56   void error(const QString &message);
       
    57   void roomChanged(const QString &room);
    52 
    58 
    53  private slots:
    59  private slots:
    54   void onReadyRead();
    60   void onReadyRead();
    55   void parseNetMessage(const QStringList &message);
    61   void parseNetMessage(const QStringList &message);
    56   void handleConnected(const QStringList &parameters);
    62   void handleConnected(const QStringList &parameters);
    95   void send(const QString &message);
   101   void send(const QString &message);
    96   void send(const QString &message, const QString &param);
   102   void send(const QString &message, const QString &param);
    97   void send(const QString &message, const QStringList &parameters);
   103   void send(const QString &message, const QStringList &parameters);
    98   void send(const QStringList &message);
   104   void send(const QStringList &message);
    99   void setSessionState(SessionState sessionState);
   105   void setSessionState(SessionState sessionState);
       
   106   void setRoom(const QString &room);
   100 
   107 
   101  private:
   108  private:
   102   QUrl m_url;
   109   QUrl m_url;
   103   QSharedPointer<QTcpSocket> m_socket;
   110   QSharedPointer<QTcpSocket> m_socket;
       
   111   QSharedPointer<PlayersListModel> m_playersModel;
       
   112   QSharedPointer<RoomsListModel> m_roomsModel;
   104   QString m_nickname;
   113   QString m_nickname;
   105   QString m_password;
   114   QString m_password;
   106   QStringList m_buffer;
   115   QStringList m_buffer;
   107   SessionState m_sessionState;
   116   SessionState m_sessionState;
       
   117   QString m_serverAuthHash;
       
   118   QString m_room;
       
   119 
       
   120   Q_DISABLE_COPY(NetSession)
   108 };
   121 };
   109 
   122 
   110 #endif  // NET_SESSION_H
   123 #endif  // NET_SESSION_H