Diffstat (limited to 'noncore/net/opieirc/ircconnection.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/net/opieirc/ircconnection.cpp | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/noncore/net/opieirc/ircconnection.cpp b/noncore/net/opieirc/ircconnection.cpp index 2325cca..88e63f7 100644 --- a/noncore/net/opieirc/ircconnection.cpp +++ b/noncore/net/opieirc/ircconnection.cpp @@ -1,10 +1,14 @@ #include <unistd.h> #include <string.h> + +#include <qstringlist.h> +#include <qdatetime.h> + #include "ircconnection.h" IRCConnection::IRCConnection(IRCServer *server) { m_server = server; m_socket = new QSocket(this); m_connected = FALSE; m_loggedIn = FALSE; connect(m_socket, SIGNAL(connected()), this, SLOT(login())); @@ -23,18 +27,33 @@ void IRCConnection::doConnect() { /* Send commands to the IRC server */ void IRCConnection::sendLine(QString line) { while((line.right(1) == "\n") || (line.right(1) == "\r")) line = line.left(line.length() - 1); line.append("\r\n"); m_socket->writeBlock(line, line.length()); } -void IRCConnection::sendCTCP(QString nick, QString line) { - sendLine("NOTICE " + nick + " :\001"+line+"\001"); +void IRCConnection::sendCTCPReply(const QString &nickname, const QString &type, const QString &args) { + sendLine("NOTICE " + nickname + " :\001" + type + " " + args + "\001"); +} + +void IRCConnection::sendCTCPRequest(const QString &nickname, const QString &type, const QString &args) { + sendLine("PRIVMSG " + nickname + " :\001" + type + " " + args + "\001"); +} + +void IRCConnection::sendCTCPPing(const QString &nickname) { + QDateTime tm; + tm.setTime_t(0); + QString strtime = QString::number(tm.secsTo(QDateTime::currentDateTime())); + sendCTCPRequest(nickname, "PING", strtime); +} + +void IRCConnection::whois(const QString &nickname) { + sendLine("WHOIS " + nickname); } /* * login() is called right after the connection * to the IRC server has been established */ void IRCConnection::login() { char hostname[256]; @@ -95,8 +114,9 @@ bool IRCConnection::isLoggedIn() { } void IRCConnection::close() { m_socket->close(); if (m_socket->state()==QSocket::Idle) { disconnect(); } } + |