harvester/server/src/harvesterserversession.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Thu, 15 Jul 2010 19:07:24 +0300
branchRCL_3
changeset 18 63c982fb92f2
parent 7 3cebc1a84278
permissions -rw-r--r--
Revision: 201025 Kit: 2010127

/*
* 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"
#include "OstTraceDefinitions.h"
#ifdef OST_TRACE_COMPILER_IN_USE
#include "harvesterserversessionTraces.h"
#endif

// ========================= MEMBER FUNCTIONS ==================================

// ---------------------------------------------------------------------------
// NewL
// ---------------------------------------------------------------------------
//
CHarvesterServerSession* CHarvesterServerSession::NewL( CHarvesterServer& aServer )
	{
    WRITELOG( "CHarvesterServerSession::NewL()" );
    OstTrace0( TRACE_NORMAL, CHARVESTERSERVERSESSION_NEWL, "CHarvesterServerSession::NewL" );    
    
    CHarvesterServerSession* self = CHarvesterServerSession::NewLC( aServer );
    CleanupStack::Pop( self );
    return self;
	}

// ---------------------------------------------------------------------------
// NewLC
// ---------------------------------------------------------------------------
//
CHarvesterServerSession* CHarvesterServerSession::NewLC( CHarvesterServer& aServer )
	{
    WRITELOG( "CHarvesterServerSession::NewLC()" );
    OstTrace0( TRACE_NORMAL, CHARVESTERSERVERSESSION_NEWLC, "CHarvesterServerSession::NewLC" );
    
    CHarvesterServerSession* self = new ( ELeave ) CHarvesterServerSession( aServer );
    CleanupStack::PushL( self );
    self->ConstructL();
    return self;
	}

// ---------------------------------------------------------------------------
// ConstructL
// ---------------------------------------------------------------------------
//
void CHarvesterServerSession::ConstructL()
	{
    WRITELOG( "CHarvesterServerSession::ConstructL()" );
    OstTrace0( TRACE_NORMAL, CHARVESTERSERVERSESSION_CONSTRUCTL, "CHarvesterServerSession::ConstructL" );
    
	}

// ---------------------------------------------------------------------------
// Default constructor
// ---------------------------------------------------------------------------
//
CHarvesterServerSession::CHarvesterServerSession( CHarvesterServer& aServer )
	: iServer( aServer )
	{
    WRITELOG( "CHarvesterServerSession::CHarvesterServerSession()" );
    OstTrace0( TRACE_NORMAL, CHARVESTERSERVERSESSION_CHARVESTERSERVERSESSION, "CHarvesterServerSession::CHarvesterServerSession" );
    
	}

// ---------------------------------------------------------------------------
// Destructor
// ---------------------------------------------------------------------------
//
CHarvesterServerSession::~CHarvesterServerSession()
	{
    WRITELOG( "CHarvesterServerSession::~CHarvesterServerSession()" );
    OstTrace0( TRACE_NORMAL, DUP1_CHARVESTERSERVERSESSION_CHARVESTERSERVERSESSION, "CHarvesterServerSession::~CHarvesterServerSession" );
    
	}

// ---------------------------------------------------------------------------
// ServiceL
// ---------------------------------------------------------------------------
//
void CHarvesterServerSession::ServiceL( const RMessage2& aMessage )
	{
    WRITELOG( "CHarvesterServerSession::ServiceL()" );	
    OstTrace0( TRACE_NORMAL, CHARVESTERSERVERSESSION_SERVICEL, "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()" );
	OstTrace0( TRACE_NORMAL, CHARVESTERSERVERSESSION_DISCONNECT, "CHarvesterServerSession::Disconnect" );
	
	iServer.UnregisterHarvestComplete( *this );
	
	// Overridden CSession2 Disconnect, Message must completed
	// via CSession2::Disconnect
	CSession2::Disconnect( aMessage );
	}