+ processWaiting(socketId);
+}
+
+
+qint64 IdentServer::addWaitingSocket()
+{
+ qint64 newSocketId = _socketId++;
+ _waiting.push_back(newSocketId);
+ return newSocketId;
+}
+
+
+qint64 IdentServer::lowestSocketId() const
+{
+ if (_waiting.empty()) {
+ return std::numeric_limits<qint64>::max();
+ }
+
+ return _waiting.front();
+}
+
+
+void IdentServer::removeWaitingSocket(qint64 socketId)
+{
+ _waiting.remove(socketId);
+}
+
+
+void IdentServer::processWaiting(qint64 socketId)
+{
+ removeWaitingSocket(socketId);
+
+ _requestQueue.remove_if([this, socketId](Request request) {
+ if (socketId < request.transactionId && responseAvailable(request)) {
+ return true;
+ }
+ else if (lowestSocketId() < request.transactionId) {
+ return false;
+ }
+ else {
+ request.respondError("NO-USER");
+ return true;
+ }
+ });
+}
+
+
+bool operator==(const Request &a, const Request &b)
+{
+ return a.requestId == b.requestId;