--- /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<CSatSServer*>( this ),
+ const_cast<TSatEventMediator&>( iEventMediator ),
+ const_cast<MSatApi&>( 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<CSatSSession*>( 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<MSatRefreshSubSession>&
+ 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