diff -r 5bed45b14781 -r b5d63d5fc252 smf/smfservermodule/smfserver/server/smfserverqt.cpp --- a/smf/smfservermodule/smfserver/server/smfserverqt.cpp Fri May 21 16:50:44 2010 +0100 +++ b/smf/smfservermodule/smfserver/server/smfserverqt.cpp Mon Jun 07 11:43:45 2010 +0100 @@ -11,42 +11,62 @@ * * Contributors: * Manasij Roy, Nalina Hariharan -* Description: -* SMF Server implementation for platforms other than Symbian. -* Uses QLocalServer-QLocalSocket classes -* -*/ + * Description: + * SMF Server implementation for platforms other than Symbian. + * Uses QLocalServer-QLocalSocket classes + * + */ #include "smfserverqt_p.h" +#include "smfserverqtsession.h" +#include "smfserver.h" #include #include -// -// SmfServerQt -// -SmfServerQt::SmfServerQt() +SmfServerQt::SmfServerQt(SmfServer *wrapper) + : m_generic(wrapper) { + m_server = new QLocalServer(this); + connect(m_server, SIGNAL(newConnection()), this, SLOT(newClientConnected())); } SmfServerQt::~SmfServerQt() { + m_server->close(); } +/** + * Start the server listening for connections. + */ bool SmfServerQt::start() { - return false; + const QString KServerName("SmfServerQt"); + if (m_server->listen(KServerName)) + { + writeLog(QString(m_server->serverName() + ": listening for connections.")); + return true; + } + else + { + writeLog(QString(KServerName + ": failed to start")); + writeLog(QString(m_server->errorString())); + return false; + } } +/** + * Return the number of open sessions + */ int SmfServerQt::sessionListCount() const { - return 0; + return m_sessions.count(); } void SmfServerQt::writeLog(QString log) const { - Q_UNUSED(log); + qDebug() << log.toAscii().constData(); } /** @@ -58,8 +78,22 @@ Q_UNUSED(success); } +/** + * Slot to receive incoming connections + */ void SmfServerQt::newClientConnected() { + QLocalSocket *client(m_server->nextPendingConnection()); + if (!client) + { + writeLog("SmfServerQt::newClientConnected(): no socket - client may have dropped."); + return; + } + + // Create a new session for this client. + writeLog("Client connected."); + + m_sessions.append(new SmfServerQtSession(client, this)); } void SmfServerQt::removeFromList() @@ -74,25 +108,3 @@ return 0; } -// -// SmfServerQtSession -// - -SmfServerQtSession::SmfServerQtSession(QLocalSocket *clientConnection, SmfServerQt *server) -{ - Q_UNUSED(server); - Q_UNUSED(clientConnection); -} - -SmfServerQtSession::~SmfServerQtSession() -{ -} - -void SmfServerQtSession::readDataFromClient() -{ -} - -void SmfServerQtSession::clientAuthorizationFinished(bool success) -{ - Q_UNUSED(success); -}