dosservices/commondsy/src/CDSYFactory.cpp
changeset 0 4e1aa6a622a0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dosservices/commondsy/src/CDSYFactory.cpp	Tue Feb 02 00:53:00 2010 +0200
@@ -0,0 +1,301 @@
+/*
+* Copyright (c) 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:  Implementation of CCDSYFactory class
+*
+*/
+
+
+
+
+// INCLUDE FILES 
+#include <f32file.h>
+#include <data_caging_path_literals.hrh>
+#include "CDSYFactory.h"
+#include "commondsy_debug.h"
+
+#ifndef RD_STARTUP_CHANGE
+#include "CDSYSysUtilsDOSServerPlugin.h"
+#include "CDSYHelperDOSServerPlugin.h"
+#include "CDSYMTCDOSServerPlugin.h"
+#include "CDSYSelftestDOSServerPlugin.h"
+#endif //RD_STARTUP_CHANGE
+
+#ifndef RD_STARTUP_CHANGE
+#include "CDSYSAEDOSServerPlugin.h"
+#endif //RD_STARTUP_CHANGE
+
+#include "CDSYExtensionDOSServerPlugin.h"
+#include "CDSYController.h"
+#include "CDSYDOSServerRequestManager.h"
+#include "CDSYEventManager.h"
+#include "CDSYServiceLogicFactory.h"
+
+
+
+// EXTERNAL DATA STRUCTURES
+// EXTERNAL FUNCTION PROTOTYPES  
+// CONSTANTS
+// MACROS
+// LOCAL CONSTANTS AND MACROS
+_LIT( KLDSYIniFile, "Z:\\private\\101f6efa\\CommonDSY.ini" );
+
+// MODULE DATA STRUCTURES
+// LOCAL FUNCTION PROTOTYPES
+// FORWARD DECLARATIONS
+// ============================= LOCAL FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// LibEntryL
+// -----------------------------------------------------------------------------
+EXPORT_C CDosFactoryBase* LibEntryL()
+    {
+    COM_TRACE_( "CDSY - LibEntryL()" );
+
+    COMPONENT_TRACE_THIS_FILE;
+    CCDSYFactory* factory = CCDSYFactory::NewL();
+
+    COM_TRACE_1( "CDSY - LibEntryL - return 0x%x", factory );
+    return factory;
+    }
+
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+
+
+// -----------------------------------------------------------------------------
+// CCDSYFactory::CCDSYFactory
+// -----------------------------------------------------------------------------
+CCDSYFactory::CCDSYFactory()
+: iCDSYController( NULL )
+, iCDSYDOSServerRequestManager( NULL )
+, iCDSYEventManager( NULL )
+, iDSYServiceLogicFactory( NULL )
+    {
+    COM_TRACE_( "CDSY - CCDSYFactory::CCDSYFactory()" );
+
+    COM_TRACE_( "CDSY - CCDSYFactory::CCDSYFactory - return void" );
+    }
+
+
+
+// -----------------------------------------------------------------------------
+// CCDSYFactory::~CCDSYFactory
+// -----------------------------------------------------------------------------
+CCDSYFactory::~CCDSYFactory()
+    {
+    COM_TRACE_( "CDSY - CCDSYFactory::~CCDSYFactory()" );
+
+    if ( iDSYServiceLogicFactory != NULL )
+        {
+        iDSYServiceLogicFactory->DeInitialize();
+        }
+    delete iDSYServiceLogicFactory;
+    iLDSYLibrary.Close();
+    delete iCDSYEventManager;
+    delete iCDSYDOSServerRequestManager;
+    delete iCDSYController;
+
+    COM_TRACE_( "CDSY - CCDSYFactory::~CCDSYFactory - return void" );
+    }
+
+
+
+// -----------------------------------------------------------------------------
+// CCDSYFactory::ConstructL
+// -----------------------------------------------------------------------------
+void CCDSYFactory::ConstructL()
+    {
+    COM_TRACE_( "CDSY - CCDSYFactory::ConstructL()" );
+
+    iCDSYController = CCDSYController::NewL();
+    iCDSYDOSServerRequestManager = CCDSYDOSServerRequestManager::NewL( *iCDSYController );
+    iCDSYEventManager = CCDSYEventManager::NewL( *iCDSYController, *this );
+    LoadLDSYModuleL();
+    COM_TRACE_1( "CDSY - CCDSYFactory::ConstructL - ret == %d", iCDSYDOSServerRequestManager->iLDSYFind );
+    
+    if ( iCDSYDOSServerRequestManager->iLDSYFind )
+        {
+        iDSYServiceLogicFactory->InitializeL( *iCDSYController );
+        }
+
+    COM_TRACE_( "CDSY - CCDSYFactory::ConstructL - return void" );
+    }
+
+
+
+// -----------------------------------------------------------------------------
+// CCDSYFactory::NewL
+// -----------------------------------------------------------------------------
+CCDSYFactory* CCDSYFactory::NewL()
+    {
+    COM_TRACE_( "CDSY - CCDSYFactory::NewL()" );
+
+    CCDSYFactory* factory = new ( ELeave ) CCDSYFactory();
+    CleanupStack::PushL( factory );
+    factory->ConstructL();
+    CleanupStack::Pop( factory );
+
+    COM_TRACE_1( "CDSY - CCDSYFactory::NewL - return 0x%x", factory );
+    return factory;
+    }
+
+
+
+// -----------------------------------------------------------------------------
+// CCDSYFactory::LoadLDSYModuleL
+// -----------------------------------------------------------------------------
+void CCDSYFactory::LoadLDSYModuleL()
+    {
+    COM_TRACE_( "CDSY - CCDSYFactory::LoadLDSYModuleL()" );
+
+    RFs fs;
+    RFile file;
+
+    User::LeaveIfError( fs.Connect() );
+    CleanupClosePushL( fs );
+
+    TInt err = file.Open( fs, KLDSYIniFile, EFileRead );
+    TRACE_ASSERT( err == KErrNone );
+    if ( err != KErrNone )
+        {
+        COM_TRACE_( "CDSY - CCDSYFactory::LoadLDSYModuleL - CommonDSY.ini file missing" );
+        CleanupStack::PopAndDestroy();
+        iCDSYDOSServerRequestManager->iLDSYFind = EFalse;
+        }
+    else
+        {
+        CleanupClosePushL( file );
+
+        TBuf8<KMaxFileName> rawFileName;
+    
+        User::LeaveIfError( file.Read( rawFileName ) );
+
+        CleanupStack::PopAndDestroy( 2 );
+
+        HBufC* unicodeFileName = HBufC::NewLC( rawFileName.Length() );
+        TPtr fileNamePtr( unicodeFileName->Des() );
+        fileNamePtr.Copy( rawFileName );
+
+        TLibraryFunction entryPoint;
+
+	    _LIT(KDSYBinaryLocDrive, "z:");
+
+	    TBuf<256> dsyBinaryLoc(KDC_SHARED_LIB_DIR);
+
+    	dsyBinaryLoc.Insert(0, KDSYBinaryLocDrive);
+	    User::LeaveIfError( iLDSYLibrary.Load( fileNamePtr, dsyBinaryLoc ) );
+
+        entryPoint = iLDSYLibrary.Lookup( 1 );
+        TRACE_ASSERT( entryPoint != NULL );
+        iDSYServiceLogicFactory = ( MCDSYServiceLogicFactory * )entryPoint();
+        TRACE_ASSERT( iDSYServiceLogicFactory != NULL );
+        CleanupStack::PopAndDestroy( unicodeFileName );
+
+        COM_TRACE_( "CDSY - CCDSYFactory::LoadLDSYModuleL - return void" );
+        }
+    }
+
+#ifndef RD_STARTUP_CHANGE
+// -----------------------------------------------------------------------------
+// CCDSYFactory::NewSysUtilsServiceL
+// -----------------------------------------------------------------------------
+CDosSysUtilsBase* CCDSYFactory::NewSysUtilsServiceL()
+    {
+    API_TRACE_( "CDSY - CCDSYFactory::NewSysUtilsServiceL()" );
+
+    CCDSYSysUtilsDOSServerPlugin *sysUtilsDOSServerPlugin = CCDSYSysUtilsDOSServerPlugin::NewL( *iCDSYDOSServerRequestManager );
+
+    API_TRACE_1( "CDSY - CCDSYFactory::NewSysUtilsServiceL - return 0x%x", sysUtilsDOSServerPlugin );
+    return sysUtilsDOSServerPlugin;
+    }
+
+// -----------------------------------------------------------------------------
+// CCDSYFactory::NewHelperServiceL
+// -----------------------------------------------------------------------------
+CDosHelperBase* CCDSYFactory::NewHelperServiceL()
+    {
+    API_TRACE_( "CDSY - CCDSYFactory::NewHelperServiceL()" );
+
+    CCDSYHelperDOSServerPlugin* helperDOSServerPlugin = CCDSYHelperDOSServerPlugin::NewL( *iCDSYDOSServerRequestManager );
+
+    API_TRACE_1( "CDSY - CCDSYFactory::NewHelperServiceL - return 0x%x", helperDOSServerPlugin );
+    return helperDOSServerPlugin;
+    }
+
+// -----------------------------------------------------------------------------
+// CCDSYFactory::NewMtcServiceL
+// -----------------------------------------------------------------------------
+CDosMtcBase* CCDSYFactory::NewMtcServiceL()
+    {
+    API_TRACE_( "CDSY - CCDSYFactory::NewMtcServiceL()" );
+
+    CCDSYMtcDOSServerPlugin* mtcDOSServerPlugin = CCDSYMtcDOSServerPlugin::NewL( *iCDSYDOSServerRequestManager );
+    
+    API_TRACE_1( "CDSY - CCDSYFactory::NewMtcServiceL - return 0x%x", mtcDOSServerPlugin );
+    return mtcDOSServerPlugin;
+    }
+
+// -----------------------------------------------------------------------------
+// CCDSYFactory::NewSelfTestServiceL
+// -----------------------------------------------------------------------------
+CDosSelfTestBase* CCDSYFactory::NewSelfTestServiceL()
+    {
+    API_TRACE_( "CDSY - CCDSYFactory::NewSelfTestServiceL()" );
+    
+    CCDSYSelfTestDOSServerPlugin* selfTestDOSServerPlugin = CCDSYSelfTestDOSServerPlugin::NewL( *iCDSYDOSServerRequestManager );
+
+    API_TRACE_1( "CDSY - CCDSYFactory::NewSelfTestServiceL - return 0x%x", selfTestDOSServerPlugin );
+    return selfTestDOSServerPlugin;
+    }
+#endif //RD_STARTUP_CHANGE  
+
+#ifndef RD_STARTUP_CHANGE
+// -----------------------------------------------------------------------------
+// CCDSYFactory::NewSaeServiceL
+// -----------------------------------------------------------------------------
+CDosSaeBase* CCDSYFactory::NewSaeServiceL()
+    {
+    API_TRACE_( "CDSY - CCDSYFactory::NewSaeServiceL()" );
+
+    CCDSYSaeDOSServerPlugin* saeDOSServerPlugin = CCDSYSaeDOSServerPlugin::NewL( *iCDSYDOSServerRequestManager );
+    
+    API_TRACE_1( "CDSY - CCDSYFactory::NewSaeServiceL - return 0x%x", saeDOSServerPlugin );
+    return saeDOSServerPlugin;
+    }
+#endif //RD_STARTUP_CHANGE
+
+// -----------------------------------------------------------------------------
+// CCDSYFactory::NewExtensionServiceL
+// -----------------------------------------------------------------------------
+CDosExtensionBase* CCDSYFactory::NewExtensionServiceL()
+    {
+    API_TRACE_( "CDSY - CCDSYFactory::NewExtensionServiceL()" );
+
+    CCDSYExtensionDOSServerPlugin* extensionDOSServerPlugin = CCDSYExtensionDOSServerPlugin::NewL( *iCDSYDOSServerRequestManager );
+
+    API_TRACE_1( "CDSY - CCDSYFactory::NewExtensionServiceL - return 0x%x", extensionDOSServerPlugin );
+    return extensionDOSServerPlugin;
+    }
+
+
+
+
+
+
+
+
+
+