mirror of
https://gitea.msk.dinamika-avia.ru/Constanta-Design/RRJServer.git
synced 2026-03-28 19:55:48 +03:00
feat: complete delay messages
This commit is contained in:
@@ -10,15 +10,7 @@ void ChatSystem::initialize(CommonClientHandler *commonClientHandler, DataParser
|
||||
this->commonClientHandler = commonClientHandler;
|
||||
this->dataParser = dataParser;
|
||||
this->clientsMap = clientsMap;
|
||||
clientNotSendedMessage = new QMap<QString,QStack<ClientMessage>*>;
|
||||
|
||||
auto stack = new QStack<ClientMessage>;
|
||||
auto clientMessage1 = ClientMessage("1-0","102-0","Сообщение 1");
|
||||
stack->append(clientMessage1);
|
||||
auto clientMessage2 = ClientMessage("1-0","102-0","Сообщение 2");
|
||||
stack->append(clientMessage2);
|
||||
|
||||
clientNotSendedMessage->insert("102", stack);
|
||||
clientNotSendedMessage = new QMap<QString,QQueue<ClientMessage>*>;
|
||||
}
|
||||
|
||||
bool ChatSystem::sendTo(ClientMessage message)
|
||||
@@ -26,16 +18,14 @@ bool ChatSystem::sendTo(ClientMessage message)
|
||||
QByteArray byteArrayMsg = dataParser->ClientAnswer()->message(message.From,message.To,message.Text);
|
||||
|
||||
auto result = message.To.split("-");
|
||||
//qt - инструктор
|
||||
//qt - клиент нельзя
|
||||
//unity - можно
|
||||
foreach(int idSocket, clientsMap->keys())
|
||||
{
|
||||
ClientHandler *handler = clientsMap->value(idSocket);
|
||||
QString userType = QString::number(static_cast<int>(handler->getClient()->getAccessType()));
|
||||
|
||||
if(handler->getClient()->getId() == result[0] &&
|
||||
userType == result[1])
|
||||
userType == result[1] &&
|
||||
handler->getClient()->getTypeClient() != TypeClientAutorization::TYPE_QT_CLIENT)
|
||||
{
|
||||
handler->sendXmlAnswer(byteArrayMsg, PacketType::TYPE_XMLANSWER);
|
||||
QString str = "Msg From Client [" + message.From + " to " + message.To + "] : " + message.Text;
|
||||
@@ -60,8 +50,8 @@ bool ChatSystem::sendMessage(ClientMessage message)
|
||||
}
|
||||
else
|
||||
{
|
||||
auto stack = new QStack<ClientMessage>;
|
||||
stack->append(message);
|
||||
auto stack = new QQueue<ClientMessage>;
|
||||
stack->enqueue(message);
|
||||
clientNotSendedMessage->insert(message.To, stack);
|
||||
}
|
||||
|
||||
@@ -76,11 +66,11 @@ void ChatSystem::sendOldMessages(QString id)
|
||||
qDebug() << id;
|
||||
if (clientNotSendedMessage->contains(id))
|
||||
{
|
||||
auto stack = clientNotSendedMessage->find(id).value();
|
||||
auto queue = clientNotSendedMessage->find(id).value();
|
||||
|
||||
while (!stack->isEmpty())
|
||||
while (!queue->isEmpty())
|
||||
{
|
||||
auto message = stack->pop();
|
||||
auto message = queue->dequeue();
|
||||
sendTo(message);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user