/*
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description:
*
*/
#include "hsrunningappsession.h"
#include "tstaskmonitorglobals.h"
#include "hsdataobservertask.h"
#include "hsdataprovidertask.h"
#include "tsdatatask.h"
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
CRunningAppSession::CRunningAppSession(MTsDataObserverStorage& observerStorage,
const MTsDataProvider& dataProvider)
:
mObserverStorage(observerStorage),
mDataProvider(dataProvider)
{
// No implementation required
}
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
CRunningAppSession::~CRunningAppSession()
{
mObserverStorage.Invalidate(this);
mDataStorages.Close();
}
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
CRunningAppSession* CRunningAppSession::NewL(MTsDataObserverStorage& observerStorage,
const MTsDataProvider& dataProvider,
const TArray<MTsDataStorage*> &dataStorages)
{
CRunningAppSession* self = new (ELeave) CRunningAppSession(observerStorage,
dataProvider);
CleanupStack::PushL(self);
self->ConstructL(dataStorages);
CleanupStack::Pop(self);
return self;
}
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
void CRunningAppSession::ConstructL(const TArray<MTsDataStorage*> &dataStorages)
{
for (TInt iter(0); iter < dataStorages.Count(); ++iter) {
mDataStorages.AppendL(dataStorages[iter]);
}
}
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
void CRunningAppSession::ServiceL(const RMessage2& message)
{
switch (message.Function()) {
case SubscribeRunningAppChanges:
CHsDataObserverTask::ExecuteLD(mObserverStorage, message);
break;
case CancelSubscribeRunningAppChanges:
mObserverStorage.Cancel(message);
break;
case GetRunningAppInfo:
case FlushData:
HsDataProviderTask::ExecuteL(mDataProvider, message);
break;
case RegisterScreenshotMessage:
case UnregisterScreenshotMessage:
case VisibilityChange:
case OpenTaskMessage:
case CloseTaskMessage:
TsDataTask::ExecuteL(mDataStorages.Array(), message);
break;
default:
message.Complete(CServer2::EBadMessageNumber);
}
}