diff -r 000000000000 -r c53acadfccc6 harvester/server/src/harvesterserversession.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/harvester/server/src/harvesterserversession.cpp Mon Jan 18 20:34:07 2010 +0200 @@ -0,0 +1,214 @@ +/* +* Copyright (c) 2006-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: Harvester server session* +*/ + +// INCLUDE FILES +#include "harvesterserversession.h" +#include "harvestercommon.h" +#include "harvesterlog.h" + +// ========================= MEMBER FUNCTIONS ================================== + +// --------------------------------------------------------------------------- +// NewL +// --------------------------------------------------------------------------- +// +CHarvesterServerSession* CHarvesterServerSession::NewL( CHarvesterServer& aServer ) + { + WRITELOG( "CHarvesterServerSession::NewL()" ); + + CHarvesterServerSession* self = CHarvesterServerSession::NewLC( aServer ); + CleanupStack::Pop( self ); + return self; + } + +// --------------------------------------------------------------------------- +// NewLC +// --------------------------------------------------------------------------- +// +CHarvesterServerSession* CHarvesterServerSession::NewLC( CHarvesterServer& aServer ) + { + WRITELOG( "CHarvesterServerSession::NewLC()" ); + + CHarvesterServerSession* self = new ( ELeave ) CHarvesterServerSession( aServer ); + CleanupStack::PushL( self ); + self->ConstructL(); + return self; + } + +// --------------------------------------------------------------------------- +// ConstructL +// --------------------------------------------------------------------------- +// +void CHarvesterServerSession::ConstructL() + { + WRITELOG( "CHarvesterServerSession::ConstructL()" ); + + } + +// --------------------------------------------------------------------------- +// Default constructor +// --------------------------------------------------------------------------- +// +CHarvesterServerSession::CHarvesterServerSession( CHarvesterServer& aServer ) + : iServer( aServer ) + { + WRITELOG( "CHarvesterServerSession::CHarvesterServerSession()" ); + } + +// --------------------------------------------------------------------------- +// Destructor +// --------------------------------------------------------------------------- +// +CHarvesterServerSession::~CHarvesterServerSession() + { + WRITELOG( "CHarvesterServerSession::~CHarvesterServerSession()" ); + } + +// --------------------------------------------------------------------------- +// ServiceL +// --------------------------------------------------------------------------- +// +void CHarvesterServerSession::ServiceL( const RMessage2& aMessage ) + { + WRITELOG( "CHarvesterServerSession::ServiceL()" ); + + /* Command can't be negative */ + if ( aMessage.Function() < 0 ) + { + User::Leave( aMessage.Function() ); + } + + switch ( aMessage.Function() ) + { + case EResumeHarvester: + { + WRITELOG( "CHarvesterServerSession::ServiceL() - EResumeHarvester command received" ); + iServer.Resume( aMessage ); + } + break; + + case EPauseHarvester: + { + WRITELOG( "CHarvesterServerSession::ServiceL() - EPauseHarvester command received" ); + iServer.Pause( aMessage ); + } + break; + + case EHarvestFile: + { +#ifdef _DEBUG + WRITELOG( "CHarvesterServerSession::ServiceL() - EHarvestFile command received" ); + WRITELOG1( "CHarvesterServerSession::ServiceL() - EHarvestFile, param 0 size: %d", aMessage.GetDesLength(0) ); + WRITELOG1( "CHarvesterServerSession::ServiceL() - EHarvestFile, param 1 size: %d", aMessage.GetDesLength(1) ); + + WRITELOG( "CHarvesterServerSession::ServiceL() - before harvest file" ); +#endif + iServer.HarvestFile( aMessage ); + WRITELOG( "CHarvesterServerSession::ServiceL() - after harvest file" ); + } + break; + + case ERegisterProcessOrigin: + { + WRITELOG( "CHarvesterServerSession::ServiceL() - ERegisterProcessOrigin command received" ); + iServer.RegisterProcessOrigin( aMessage ); + } + break; + + case EUnregisterProcessOrigin: + { + WRITELOG( "CHarvesterServerSession::ServiceL() - EUnregisterProcessOrigin command received" ); + iServer.UnregisterProcessOrigin( aMessage ); + } + break; + + case ERegisterHarvestComplete: + { + WRITELOG( "CHarvesterServerSession::ServiceL() - ERequestHarvestComplete command received" ); + TInt error = iServer.RegisterHarvestComplete( *this, aMessage ); + + // complete message if registering failed + if ( error != KErrNone && !aMessage.IsNull()) + { + aMessage.Complete( error ); + } + } + break; + + case EUnregisterHarvestComplete: + { + WRITELOG( "CHarvesterServerSession::ServiceL() - EUnregisterHarvestComplete command received" ); + TInt error = iServer.UnregisterHarvestComplete( *this ); + + // complete message if registering failed + if ( !aMessage.IsNull() ) + { + aMessage.Complete( error ); + } + } + break; + + case ERegisterHarvesterEvent: + { + WRITELOG( "CHarvesterServerSession::ServiceL() - ERegisterHarvesterEvent command received" ); + iServer.RegisterHarvesterEvent( aMessage ); + } + break; + + case EUnregisterHarvesterEvent: + { + WRITELOG( "CHarvesterServerSession::ServiceL() - EUnregisterHarvesterEvent command received" ); + iServer.UnregisterHarvesterEvent( aMessage ); + } + break; + + case EHarvestFileWithUID: + { +#ifdef _DEBUG + WRITELOG( "CHarvesterServerSession::ServiceL() - EHarvestFileWithUID command received" ); + WRITELOG1( "CHarvesterServerSession::ServiceL() - EHarvestFileWithUID, param 0 size: %d", aMessage.GetDesLength(0) ); + WRITELOG1( "CHarvesterServerSession::ServiceL() - EHarvestFileWithUID, param 1 size: %d", aMessage.GetDesLength(1) ); + + WRITELOG( "CHarvesterServerSession::ServiceL() - before harvest file" ); +#endif + iServer.HarvestFileWithUID( aMessage ); + WRITELOG( "CHarvesterServerSession::ServiceL() - after harvest file" ); + } + break; + + default: + { +#ifdef _DEBUG + WRITELOG1( "CHarvesterServerSession::ServiceL() - Invalid Call!!! Number: %d", aMessage.Function() ); +#endif + _LIT( KMessage, "Command not supported!" ); + iServer.PanicClient( aMessage, KErrNotSupported, KMessage ); + } + break; + } + } + +void CHarvesterServerSession::Disconnect(const RMessage2 &aMessage) + { + //just make sure the server is cleaned after client crash + WRITELOG( "CHarvesterServerSession::Disconnect()" ); + + iServer.UnregisterHarvestComplete( *this ); + + // Overridden CSession2 Disconnect, Message must completed + // via CSession2::Disconnect + CSession2::Disconnect( aMessage ); + }