Guest User

Untitled

a guest
Jun 19th, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.22 KB | None | 0 0
  1. void
  2. Socket::processData(const QString &data)
  3. {
  4. kDebug() << data;
  5. QString line = data;
  6. QString server;
  7. QString prefix;
  8. QString command;
  9. QStringList params;
  10. bool isNumeric = false;
  11.  
  12. if (line.startsWith(QChar(':'))) {
  13. prefix = line.mid(1, line.indexOf(QChar(' ')) - 1);
  14. line.remove(0, prefix.length() + 2);
  15. }
  16.  
  17. command = line.mid(0, line.indexOf(QChar(' ')));
  18. line.remove(0, command.length() + 1);
  19.  
  20. quint16 code = command.toUShort(&isNumeric);
  21.  
  22. while (!line.isEmpty()) {
  23. if (line.startsWith(QChar(':'))) {
  24. line.remove(0, 1);
  25. params << line;
  26. line.clear();
  27. } else {
  28. QString param = line.mid(0, line.indexOf(QChar(' ')));
  29. line.remove(0, param.length() + 1);
  30. params << param;
  31. }
  32. }
  33.  
  34. kDebug() << params;
  35.  
  36. if (command == "JOIN") {
  37. QString nick = Rfc2812::nickFromMask(prefix);
  38. if (nick == currentNick()) {
  39. emit onSelfJoin(params[0]);
  40. } else {
  41. emit onUserJoin(prefix, params[0]);
  42. }
  43. } else if (command == "PART") {
  44. emit onUserPart(prefix, params[0], params[1]);
  45. } else if (command == "PRIVMSG") {
  46. QString from = Rfc2812::nickFromMask(prefix);
  47. QString channel;
  48. QString to;
  49. QString message = params[1];
  50.  
  51. if (Rfc2812::isValidChannel(params[0])) {
  52. channel = params[0];
  53. } else {
  54. to = params[0];
  55. }
  56. emit onPrivmsg(channel, from, to, message);
  57. } else if (command == "NOTICE") {
  58. if (params[0] == "AUTH") {
  59. emit onNoticeAuth(params[1]);
  60. } else {
  61. emit onNotice(params[1]);
  62. }
  63. } else if (command == "QUIT") {
  64. emit onUserQuit(prefix, params[0]);
  65. } else if (isNumeric) {
  66. switch (code) {
  67. case RPL_TOPIC: {
  68. emit onTopic(params[1], params[2]);
  69. break;
  70. }
  71. case RPL_NAMREPLY: {
  72. emit onNameReply(params[2], params[3]);
  73. break;
  74. }
  75. default: {
  76. break;
  77. }
  78. }
  79. }
  80. }
Add Comment
Please, Sign In to add comment