qmlfrontend/net_session.h
changeset 15099 fb7a9b0119d3
parent 15068 773beead236f
equal deleted inserted replaced
15098:a2d09a597fbb 15099:fb7a9b0119d3
    16 
    16 
    17   // clang-format off
    17   // clang-format off
    18   Q_PROPERTY(QUrl url READ url WRITE setUrl NOTIFY urlChanged)
    18   Q_PROPERTY(QUrl url READ url WRITE setUrl NOTIFY urlChanged)
    19   Q_PROPERTY(QAbstractSocket::SocketState state READ state NOTIFY stateChanged)
    19   Q_PROPERTY(QAbstractSocket::SocketState state READ state NOTIFY stateChanged)
    20   Q_PROPERTY(QString nickname READ nickname WRITE setNickname NOTIFY nicknameChanged)
    20   Q_PROPERTY(QString nickname READ nickname WRITE setNickname NOTIFY nicknameChanged)
    21   Q_PROPERTY(QString password READ password WRITE setPassword NOTIFY passwordChanged)
       
    22   Q_PROPERTY(SessionState sessionState READ sessionState NOTIFY sessionStateChanged)
    21   Q_PROPERTY(SessionState sessionState READ sessionState NOTIFY sessionStateChanged)
    23   Q_PROPERTY(QString room READ room NOTIFY roomChanged)
    22   Q_PROPERTY(QString room READ room NOTIFY roomChanged)
       
    23   Q_PROPERTY(QString passwordHash READ passwordHash WRITE setPasswordHash NOTIFY passwordHashChanged)
    24   // clang-format on
    24   // clang-format on
    25 
    25 
    26  public:
    26  public:
    27   enum SessionState { NotConnected, Login, Lobby, Room, Game };
    27   enum SessionState { NotConnected, Login, Authentication, Lobby, Room, Game };
    28   Q_ENUMS(SessionState)
    28   Q_ENUMS(SessionState)
    29 
    29 
    30   explicit NetSession(QObject *parent = nullptr);
    30   explicit NetSession(QObject *parent = nullptr);
    31   ~NetSession() override;
    31   ~NetSession() override;
    32 
    32 
    33   QUrl url() const;
    33   QUrl url() const;
    34   QAbstractSocket::SocketState state() const;
    34   QAbstractSocket::SocketState state() const;
    35 
    35 
    36   QString nickname() const;
    36   QString nickname() const;
    37   QString password() const;
       
    38   SessionState sessionState() const;
    37   SessionState sessionState() const;
    39   QString room() const;
    38   QString room() const;
       
    39   QString passwordHash() const;
    40 
    40 
    41  public slots:
    41  public slots:
    42   void open();
    42   void open();
    43   void close();
    43   void close();
    44 
    44 
    45   void setUrl(const QUrl &url);
    45   void setUrl(const QUrl &url);
    46   void setNickname(const QString &nickname);
    46   void setNickname(const QString &nickname);
    47   void setPassword(const QString &password);
    47   void setPasswordHash(const QString &passwordHash);
    48 
    48 
    49  signals:
    49  signals:
    50   void urlChanged(const QUrl url);
    50   void urlChanged(const QUrl url);
    51   void stateChanged(QAbstractSocket::SocketState state);
    51   void stateChanged(QAbstractSocket::SocketState state);
    52   void nicknameChanged(const QString &nickname);
    52   void nicknameChanged(const QString &nickname);
    53   void passwordChanged(const QString &password);
       
    54   void sessionStateChanged(SessionState sessionState);
    53   void sessionStateChanged(SessionState sessionState);
    55   void warning(const QString &message);
    54   void warning(const QString &message);
    56   void error(const QString &message);
    55   void error(const QString &message);
    57   void roomChanged(const QString &room);
    56   void roomChanged(const QString &room);
       
    57   void passwordHashChanged(const QString &passwordHash);
       
    58   void passwordAsked();
    58 
    59 
    59  private slots:
    60  private slots:
    60   void onReadyRead();
    61   void onReadyRead();
    61   void parseNetMessage(const QStringList &message);
    62   void parseNetMessage(const QStringList &message);
    62   void handleConnected(const QStringList &parameters);
    63   void handleConnected(const QStringList &parameters);
   100 
   101 
   101   void send(const QString &message);
   102   void send(const QString &message);
   102   void send(const QString &message, const QString &param);
   103   void send(const QString &message, const QString &param);
   103   void send(const QString &message, const QStringList &parameters);
   104   void send(const QString &message, const QStringList &parameters);
   104   void send(const QStringList &message);
   105   void send(const QStringList &message);
       
   106 
       
   107   void sendPassword();
       
   108 
   105   void setSessionState(SessionState sessionState);
   109   void setSessionState(SessionState sessionState);
   106   void setRoom(const QString &room);
   110   void setRoom(const QString &room);
   107 
   111 
   108  private:
   112  private:
   109   QUrl m_url;
   113   QUrl m_url;
   110   QSharedPointer<QTcpSocket> m_socket;
   114   QSharedPointer<QTcpSocket> m_socket;
   111   QSharedPointer<PlayersListModel> m_playersModel;
   115   QSharedPointer<PlayersListModel> m_playersModel;
   112   QSharedPointer<RoomsListModel> m_roomsModel;
   116   QSharedPointer<RoomsListModel> m_roomsModel;
   113   QString m_nickname;
   117   QString m_nickname;
   114   QString m_password;
       
   115   QStringList m_buffer;
   118   QStringList m_buffer;
   116   SessionState m_sessionState;
   119   SessionState m_sessionState;
   117   QString m_serverAuthHash;
   120   QString m_serverAuthHash;
   118   QString m_room;
   121   QString m_room;
       
   122   QString m_serverSalt;
       
   123   QString m_serverHash;
       
   124   QString m_clientSalt;
       
   125   QString m_passwordHash;
   119 
   126 
   120   Q_DISABLE_COPY(NetSession)
   127   Q_DISABLE_COPY(NetSession)
   121 };
   128 };
   122 
   129 
   123 #endif  // NET_SESSION_H
   130 #endif  // NET_SESSION_H