smf/smfservermodule/smfclient/client/smfclientqt.cpp
changeset 13 b5d63d5fc252
parent 10 77a56c951f86
--- a/smf/smfservermodule/smfclient/client/smfclientqt.cpp	Fri May 21 16:50:44 2010 +0100
+++ b/smf/smfservermodule/smfclient/client/smfclientqt.cpp	Mon Jun 07 11:43:45 2010 +0100
@@ -15,9 +15,23 @@
 
 #include "smfclientqt.h"
 
-SmfClientQt::SmfClientQt(QObject *parent) :
-    QObject(parent)
+SmfClientQt::SmfClientQt(QObject *parent)
+    : QObject(parent)
 {
+    m_serverConnection = new QLocalSocket();
+
+    connect(m_serverConnection, SIGNAL(connected()), this, SLOT(connectionEstablished()));
+    connect(m_serverConnection, SIGNAL(readyRead()), this, SLOT(readIncomingData()));
+    connect(m_serverConnection, SIGNAL(error(QLocalSocket::LocalSocketError)),
+            this, SLOT(handleError(QLocalSocket::LocalSocketError)));
+
+    m_serverConnection->connectToServer("SmfServerQt", QIODevice::ReadWrite);
+}
+
+SmfClientQt::~SmfClientQt()
+{
+    m_serverConnection->close();
+    delete m_serverConnection;
 }
 
 /**
@@ -26,20 +40,33 @@
  * @param aInterfaceName Interface name
  * @param requestType Opcode
  */
-int SmfClientQt::sendRequest(QByteArray& aSerializedData, QString aInterfaceName,
+int SmfClientQt::sendRequest(QByteArray& serializedData, QString interfaceName,
                              SmfRequestTypeID requestType)
 {
-
+    QDataStream out(m_serverConnection);
+    out << requestType;
+    out << interfaceName;
+    out << serializedData.size();
+    out << serializedData;
 }
 
 /**
  * This overloaded API is for ESmfGetServices, where data should be
  * fetched synchronously
  */
-QByteArray SmfClientQt::sendRequest(QString aInterfaceName,
+QByteArray SmfClientQt::sendRequest(QString interfaceName,
             SmfRequestTypeID requestType)
 {
+    QDataStream out(m_serverConnection);
+    out << requestType;
+    out << interfaceName;
 
+    // TODO: This needs to be asynchronous. Remove this wait when user API is updated.
+    m_serverConnection->waitForBytesWritten(-1);
+
+    QByteArray in;
+    out >> in;
+    return in;
 }
 
 /**
@@ -48,7 +75,9 @@
 int SmfClientQt::sendDummyRequest(QByteArray* provider,QString aInterfaceName,
             SmfRequestTypeID requestType)
 {
-
+    Q_UNUSED(provider);
+    Q_UNUSED(aInterfaceName);
+    Q_UNUSED(requestType);
 }
 
 /**
@@ -59,3 +88,25 @@
 {
 
 }
+
+void SmfClientQt::connectionEstablished()
+{
+    qDebug() << "Connected to server successfully.";
+}
+
+void SmfClientQt::readIncomingData()
+{
+}
+
+void SmfClientQt::handleError(QLocalSocket::LocalSocketError error)
+{
+    switch(error)
+    {
+    case QLocalSocket::ServerNotFoundError:
+        qDebug() << "Server not found.";
+        break;
+    default:
+        qDebug() << "Unhandled socket error";
+        break;
+    }
+}