diff -r 000000000000 -r 1bce908db942 multimediacommsengine/tsrc/testdriver/testclient/watcher/src/CTcWatcherSession.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/multimediacommsengine/tsrc/testdriver/testclient/watcher/src/CTcWatcherSession.cpp Tue Feb 02 01:04:58 2010 +0200 @@ -0,0 +1,119 @@ +/* +* Copyright (c) 2004 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: Implementation +* +*/ + +#include "CTcWatcherSession.h" +#include "CTcWatcherServer.h" +#include "CTcCoroner.h" +#include "CTcGrimreaper.h" +#include "WatcherConstants.h" + +CTcWatcherSession* CTcWatcherSession::NewL( +#ifndef __IPC_V2_PRESENT__ + RThread& aClient, +#endif + CTcWatcherServer* aServer ) + { + CTcWatcherSession* self = +#ifdef __IPC_V2_PRESENT__ + new( ELeave ) CTcWatcherSession; +#else + new( ELeave ) CTcWatcherSession( aClient ); +#endif + + CleanupStack::PushL( self ); + self->ConstructL( aServer ); + CleanupStack::Pop(); + + return self; + } + +CTcWatcherSession::~CTcWatcherSession() + { + delete iCoroner; + delete iGrimreaper; + iWatcherServer->SessionRemoved(); + } + +CTcWatcherSession::CTcWatcherSession() + { + } + +void CTcWatcherSession::ConstructL( CTcWatcherServer* aServer ) + { +#ifndef __IPC_V2_PRESENT__ + CreateL( *aServer ); +#endif + + iWatcherServer = aServer; + iWatcherServer->SessionAdded(); + } + +#ifdef __IPC_V2_PRESENT__ +void CTcWatcherSession::ServiceL( const RMessage2& aMessage ) +#else +void CTcWatcherSession::ServiceL( const RMessage& aMessage ) +#endif + { + // Any leaves from this function will be catched by the Active Scheduler + // and forwarded to CTcWatcher::RunError(). + + // Check for session related requests + TInt status( KErrNone ); + switch( aMessage.Function() ) + { + case ECloseSession: + { + // Session destruction is handled + // by the client-server framework. + delete iCoroner; + iCoroner = NULL; + delete iGrimreaper; + iGrimreaper = NULL; + break; + } + case EConfigAndStart: + { + RThread clientThread; +#ifdef __IPC_V2_PRESENT__ + aMessage.Client( clientThread ); + CleanupClosePushL( clientThread ); + + aMessage.ReadL( 0, iAppName ); + iCoroner = CTcCoroner::NewL( clientThread, iAppName, *iWatcherServer ); + iGrimreaper = CTcGrimreaper::NewL( clientThread, aMessage.Int1() ); + CleanupStack::PopAndDestroy(); +#else + aMessage.ReadL( aMessage.Ptr0(), iAppName ); + iCoroner = CTcCoroner::NewL( Client(), iAppName, *iWatcherServer ); + iGrimreaper = CTcGrimreaper::NewL( Client(), aMessage.Int1() ); +#endif + break; + } + case EPing: + { + iGrimreaper->NotYet(); + break; + } + default: + { + // Unknown request + status = KErrUnknown; + } + } + + aMessage.Complete( status ); + }