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 ¶meters); |
63 void handleConnected(const QStringList ¶meters); |
100 |
101 |
101 void send(const QString &message); |
102 void send(const QString &message); |
102 void send(const QString &message, const QString ¶m); |
103 void send(const QString &message, const QString ¶m); |
103 void send(const QString &message, const QStringList ¶meters); |
104 void send(const QString &message, const QStringList ¶meters); |
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 |