diff -r 000000000000 -r ff3b6d0fd310 satengine/SatServer/Engine/src/CSatSServer.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/satengine/SatServer/Engine/src/CSatSServer.cpp Tue Feb 02 01:11:09 2010 +0200 @@ -0,0 +1,255 @@ +/* +* Copyright (c) 2002-2007 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: Manages the sessions. +* +*/ + + + +// INCLUDE FILES +#include "CSatSServer.h" +#include "SatSOpcodes.h" +#include "CSatCommandContainer.h" +#include "CSatSSession.h" +#include "SatLog.h" +#include "SatServerFactory.h" +#include "CSatSUiClientHandler.h" +//lint -e766 Used inside TRAP macro, lint misfunction. +#include "EnginePanic.h" + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CSatSServer::CSatSServer +// C++ default constructor can NOT contain any code, that +// might leave. +// ----------------------------------------------------------------------------- +// +CSatSServer::CSatSServer() : +CPolicyServer( EPriorityHigh, satServerPolicy, ESharableSessions ) + { + LOG( SIMPLE, "SATENGINE: CSatSServer::CSatSServer calling-exiting" ) + } + +// ----------------------------------------------------------------------------- +// CSatSServer::ConstructL +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void CSatSServer::ConstructL() + { + LOG( SIMPLE, "SATENGINE: CSatSServer::ConstructL calling" ) + + iObjectConIx = CObjectConIx::NewL(); + iUiHandler = CSatSUiClientHandler::NewL( *this, iEventMediator ); + iCmdContainer = CSatCommandContainer::NewL( + *this, iEventMediator, *iUiHandler ); + + iUiHandler->SetUtils( iCmdContainer ); + + const TInt err( Start( KSatServerName ) ); + __ASSERT_ALWAYS( err == KErrNone, PanicSatEngine( ESatSStartServer ) ); + + LOG( SIMPLE, "SATENGINE: CSatSServer::ConstructL exiting" ) + } + +// ----------------------------------------------------------------------------- +// CSatSServer::NewL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +CSatSServer* CSatSServer::NewL() + { + LOG( SIMPLE, "SATENGINE: CSatSServer::NewL calling" ) + CSatSServer* self = new( ELeave ) CSatSServer(); + + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + + LOG( SIMPLE, "SATENGINE: CSatSServer::NewL exiting" ) + return self; + } + +// Destructor +CSatSServer::~CSatSServer() + { + LOG( SIMPLE, "SATENGINE: CSatSServer::~CSatSServer calling" ) + + iEventMediator.Reset(); + + iRefreshSubSessions.Close(); + delete iCmdContainer; + delete iUiHandler; + delete iObjectConIx; + + LOG( SIMPLE, "SATENGINE: CSatSServer::~CSatSServer exiting" ) + } + +// ----------------------------------------------------------------------------- +// CSatSServer::CompleteMessage +// Completes current message from client with an error code. +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CSatSServer::CompleteMessage( + TInt aError ) const// Error code, which is used to complete the message. + { + LOG( SIMPLE, "SATENGINE: CSatSServer::CompleteMessage calling" ) + + Message().Complete( aError ); + + LOG( SIMPLE, "SATENGINE: CSatSServer::CompleteMessage exiting" ) + } + +// ----------------------------------------------------------------------------- +// CSatSServer::CreateNewContainerL +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +CObjectCon* CSatSServer::CreateNewContainerL() + { + LOG( SIMPLE, "SATENGINE: CSatSServer::CreateNewContainerL calling" ) + + CObjectCon* objCon = iObjectConIx->CreateL(); + + LOG( SIMPLE, "SATENGINE: CSatSServer::CreateNewContainerL exiting" ) + return objCon; + } + +// ----------------------------------------------------------------------------- +// CSatSServer::AddL +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +void CSatSServer::AddL( const MSatRefreshSubSession* aSubSession ) + { + LOG( SIMPLE, "SATENGINE: CSatSServer::AddL calling" ) + + User::LeaveIfError( iRefreshSubSessions.Append( aSubSession ) ); + + LOG( SIMPLE, "SATENGINE: CSatSServer::AddL exiting" ) + } + +// ----------------------------------------------------------------------------- +// CSatSServer::Remove +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +void CSatSServer::Remove( const MSatRefreshSubSession* aSubSession ) + { + LOG( SIMPLE, "SATENGINE: CSatSServer::Remove calling" ) + const TInt index( iRefreshSubSessions.Find( aSubSession ) ); + + if ( KErrNotFound != index ) + { + LOG( SIMPLE, "SATENGINE: CSatSServer::Remove KErrNotFound != index" ) + iRefreshSubSessions.Remove( index ); + } + + LOG( SIMPLE, "SATENGINE: CSatSServer::Remove exiting" ) + } + +// ----------------------------------------------------------------------------- +// CSatSServer::NewSessionL +// Creates new session if the clients version number matches with server +// version number. +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +CSession2* CSatSServer::NewSessionL( + const TVersion& aVersion, // Clients version of the server + const RMessage2& /*aMessage*/ ) const // Message + { + LOG( SIMPLE, "SATENGINE: CSatSServer::NewSessionL calling" ) + + // Check we're the right version. + TVersion satVersionInformation( KSatServerMajorVersionNumber, + KSatServerMinorVersionNumber,KSatServerBuildVersionNumber ); + + if ( !User::QueryVersionSupported( satVersionInformation, aVersion ) ) + { + LOG( SIMPLE, "SATENGINE: CSatSServer::NewSessionL KErrNotSupported" ) + User::Leave( KErrNotSupported ); + } + + // Create a new session. + CSatSSession* session = + CSatSSession::NewL( const_cast( this ), + const_cast( iEventMediator ), + const_cast( iCmdContainer->USatAPI() ), + *iUiHandler ); + + LOG( SIMPLE, "SATENGINE: CSatSServer::NewSessionL exiting" ) + return session; + } + +// ----------------------------------------------------------------------------- +// CSatSServer::UiSession +// Getter for ui session +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +MSatUiSession* CSatSServer::UiSession() + { + LOG( SIMPLE, "SATENGINE: CSatSServer::UiSession calling" ) + MSatUiSession* result = NULL; + + //lint -e{1757} Post increment acceptable here. + for ( iSessionIter.SetToFirst(); + iSessionIter.operator CSession2*() && ( !result ); + iSessionIter++ ) + { + CSatSSession* session = + static_cast( iSessionIter.operator CSession2*() ); + + // Has session ui subsession + result = session->UiSubSession(); + } + + if ( NULL != result ) + { + LOG( SIMPLE, + "SATENGINE: CSatSServer::UiSession exiting (Ui session found)" ) + } + else + { + LOG( SIMPLE, + "SATENGINE: CSatSServer::UiSession exiting (Ui session not found)" ) + } + LOG( SIMPLE, "SATENGINE: CSatSServer::UiSession exiting" ) + return result; + } + +// ----------------------------------------------------------------------------- +// CSatSServer::RefreshSubSessions +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +const RPointerArray& + CSatSServer::RefreshSubSessions() + { + LOG( SIMPLE, "SATENGINE: CSatSServer::RefreshSubSessions calling-exiting" ) + return iRefreshSubSessions; + } + +// ----------------------------------------------------------------------------- +// CSatSServer::SatUtils +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +MSatUtils* CSatSServer::SatUtils() + { + LOG( SIMPLE, "SATENGINE: CSatSServer::SatUtils calling-exiting" ) + return iCmdContainer; + } + +// End of File