Request request{socket, localPort, query, transactionId, _requestId++};
if (!success) {
- responseUnavailable(request);
+ request.respondError("NO-USER");
} else if (responseAvailable(request)) {
// success
} else if (lowestSocketId() < transactionId) {
_requestQueue.emplace_back(request);
} else {
- responseUnavailable(request);
+ request.respondError("NO-USER");
}
}
+void Request::respondSuccess(const QString &user) {
+ QString data = query + " : USERID : Quassel : " + user + "\r\n";
+
+ socket->write(data.toUtf8());
+ socket->flush();
+ socket->close();
+}
+
+void Request::respondError(const QString &error) {
+ QString data = query + " : ERROR : " + error + "\r\n";
+
+ socket->write(data.toUtf8());
+ socket->flush();
+ socket->close();
+}
+
bool IdentServer::responseAvailable(Request request) {
if (!_connections.contains(request.localPort)) {
return false;
}
QString user = _connections[request.localPort];
- QString data = request.query + " : USERID : Quassel : " + user + "\r\n";
-
- request.socket->write(data.toUtf8());
- request.socket->flush();
- request.socket->close();
-
+ request.respondSuccess(user);
return true;
}
-void IdentServer::responseUnavailable(Request request) {
- QString data = request.query + " : ERROR : NO-USER\r\n";
-
- request.socket->write(data.toUtf8());
- request.socket->flush();
- request.socket->close();
-}
-
-
bool IdentServer::addSocket(const CoreIdentity *identity, const QHostAddress &localAddress, quint16 localPort,
const QHostAddress &peerAddress, quint16 peerPort, qint64 socketId) {
Q_UNUSED(localAddress)
} else if (lowestSocketId() < request.transactionId) {
return false;
} else {
- responseUnavailable(request);
+ request.respondError("NO-USER");
return true;
}
});
qint64 requestId;
friend bool operator==(const Request &a, const Request &b);
+
+ void respondSuccess(const QString &user);
+ void respondError(const QString &error);
};
class IdentServer : public QObject {
private:
bool responseAvailable(Request request);
- void responseUnavailable(Request request);
QString sysIdentForIdentity(const CoreIdentity *identity) const;