diff -r cfcbf08528c4 -r 2b40d63a9c3d qthighway/tests/testapps/testservice/testservice.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qthighway/tests/testapps/testservice/testservice.cpp Fri Apr 16 15:51:22 2010 +0300 @@ -0,0 +1,185 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU Lesser General Public License as published by +* the Free Software Foundation, version 2.1 of the License. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Lesser General Public License for more details. +* +* You should have received a copy of the GNU Lesser General Public License +* along with this program. If not, +* see "http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html/". +* +* Description: +* +*/ + +#include +#include +#include +#include +#include "testservice.h" +#include "mytimer.h" + +TestService::TestService(QObject* parent ) + : XQServiceProvider("com.nokia.services.testservice.TestService", parent) +{ + publishAll(); + timer1 = new QTimer(this); + timer2 = new QTimer(this); + mRequestIndex1 = -1; + mRequestIndex2 = -1; + timerKey = 0; +} + +TestService::~TestService() +{ + delete timer1; + delete timer2; +} + +int TestService::syncNoParams() +{ + qDebug() << "[QTH] [TestService] syncNoParams"; + + for( int i = 0; i<20000; i++ ) + { + int ii = i; + } + + qDebug() << "[QTH] [TestService] syncNoParams end"; + return 1; +} + +int TestService::syncWithParams(QString param1, int param2) +{ + qDebug() << "[QTH] [TestService] syncWithParam "; + qDebug() << "[QTH] [TestService] param1: " << param1; + qDebug() << "[QTH] [TestService] param2: " << param2; + + for( int i = 0; i<20000; i++ ) + { + int ii = i; + } + + qDebug() << "[QTH] [TestService] syncWithParam end"; + return 1; +} + +int TestService::asyncNoParams() +{ + qDebug() << "[QTH] [TestService] asyncNoParams START"; + QString returnString("my_request"); + + mRequestIndex1 = setCurrentRequestAsync(); + + bool res = connect(timer1, SIGNAL(timeout()), this, SLOT(DoneAsyncNoParams())); + qDebug() << "[QTH] [TestService] \t connect timer1->timeout() to this->DoneAsyncNoParams() = " << res ; + timer1->start(10000); + qDebug() << "[QTH] [TestService] asyncNoParams END"; + return 1; +} + +void TestService::DoneAsyncNoParams() + { + qDebug() << "[QTH] [TestService] DoneasyncNoParams START"; + + if (mRequestIndex1 == -1) { + qDebug() << "[QTH] [TestService] \t mRequestIndex1 == -1 !!!!"; + return; + } + + qDebug() << "[QTH] [TestService] \t disconnect"; + disconnect(timer1, SIGNAL(timeout()), this, SLOT(DoneAsyncNoParams())); + qDebug() << "[QTH] [TestService] \t completeRequest(1, QVariant(1)) start"; + completeRequest(mRequestIndex1, QVariant(1)); + qDebug() << "[QTH] [TestService] \t completeRequest(" << mRequestIndex1 << ", QVariant(1)) end"; + qDebug() << "[QTH] [TestService] DoneasyncNoParams END"; + } + + +int TestService::asyncWithParams(QString param1, int param2) +{ + timerKey++; + qDebug() << "[QTH] [TestService] asyncWithParams START"; + qDebug() << "[QTH] [TestService] \t param1: " << param1; + qDebug() << "[QTH] [TestService] \t param2: " << param2; + + qDebug() << "[QTH] [TestService] \t setCurrentRequestAsync"; + mRequestIndex2 = setCurrentRequestAsync(); + qDebug() << "[QTH] [TestService] \t currentRequestIndex = " << mRequestIndex2; + + + MyTimer* mt = new MyTimer(); + + mt->setTimerKey(timerKey); + mt->setRequestId(mRequestIndex2); + qDebug() << "[QTH] [TestService] \t insert a new timer having key = " << timerKey; + timers.insert(timerKey, mt); + qDebug() << "[QTH] [TestService] \t size of timers map = " << timers.size(); + + qDebug() << "[QTH] [TestService] \t connect(timer2, SIGNAL(timeout()), this, SLOT(DoneAsyncWithParams()))"; + bool res = connect(mt, SIGNAL(timeout(int)), this, SLOT(DoneAsyncWithParams(int))); + qDebug() << "[QTH] [TestService] \t connect result = " << res; + + mt->start(10000); + + QString returnString; + returnString.append(param1); + returnString.append(" "); + returnString.append(param2); + qDebug() << "[QTH] [TestService] \t returnString = " << returnString; + qDebug() << "[QTH] [TestService] asyncWithParams END"; + return 1; +} + + +void TestService::DoneAsyncWithParams(int timerId) +{ + qDebug() << "[QTH] [TestService] DoneAsyncWithParams START"; + qDebug() << "[QTH] [TestService] \t timerId = " << timerId; + + if (!timers.contains(timerId)) { + qDebug() << "[QTH] [TestService] \t timers map does not contain timer having key = " << timerId << " !!!! "; + qDebug() << "[QTH] [TestService] \t return !!!"; + qDebug() << "[QTH] [TestService] DoneAsyncWithParams END (1)"; + return; + } else { + MyTimer* mt = timers[timerId]; + disconnect(mt, SIGNAL(timeout(int)), this, SLOT(DoneAsyncWithParams(int))); + int requestId = mt->getRequestId(); + qDebug() << "[QTH] [TestService] \t requestId = " << requestId; + timers.remove(timerId); + delete mt; + mt = NULL; + + if (requestId == -1) { + qDebug() << "[QTH] [TestService] \t requestId == -1 !!!!"; + return; + } + qDebug() << "[QTH] [TestService] \t completeRequest -> requestId = " << requestId << ", retValue = QVariant(\"helloworld!\")"; + completeRequest(requestId, QVariant("helloworld!")); + qDebug() << "[QTH] [TestService] DoneAsyncWithParams END (2)"; + } +} + +// not used +void TestService::longRunningRequest() +{ + qDebug() << "[QTH] [TestService] longRunningRequest START"; + qDebug() << "[QTH] [TestService] \t QTimer::singleShot(30000, this, SLOT(completeLongRunningRequest()))"; + QTimer::singleShot(30000, this, SLOT(completeLongRunningRequest())); + qDebug() << "[QTH] [TestService] longRunningRequest END"; +} + +void TestService::completeLongRunningRequest() +{ + qDebug() << "[QTH] [TestService] completeLongRunningRequest END"; + completeRequest(mRequestIndex3 = setCurrentRequestAsync(), QVariant(true)); + qDebug() << "[QTH] [TestService] completeLongRunningRequest END"; +}