applayerpluginsandutils/bookmarksupport/test/cenrepsrv/main.cpp
changeset 0 b16258d2340f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/applayerpluginsandutils/bookmarksupport/test/cenrepsrv/main.cpp	Tue Feb 02 01:09:52 2010 +0200
@@ -0,0 +1,165 @@
+// Copyright (c) 2004-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:
+//
+
+#include "sessmgr.h"   // CSessionManager
+#include "srvparams.h" // KServerName
+#include "srvres.h"	   // TServerResources
+#include "srvrepos.h"  // CServerRepository
+#include <bautils.h>   // BaflUtils::FileExists()
+#include <bacline.h>   // CCommandLineArguments
+#include "backup.h"	   // CRepositoryBackupClient
+#include "install.h"   // SWI watcher
+
+enum
+	{
+	ESoftReset = 0x01,
+	} TStartupOptions;
+
+_LIT(KSoftReset, "--SoftReset");
+
+static void ParseCmdLineOptions(TInt& aOptions)
+	{
+	CCommandLineArguments* args = CCommandLineArguments::NewLC();
+
+	for (TInt i = 1; i < args->Count(); ++i)
+		{
+		if (args->Arg(i).Compare(KSoftReset) == 0)
+			{
+			aOptions |= ESoftReset;
+			}
+		}
+
+	CleanupStack::PopAndDestroy(args);
+	}
+
+static void CloseTServerResources(TAny*)
+	{
+	// Ready to exit.
+	TServerResources::Close();
+	}
+
+//
+// Perform all server initialisation, in particular creation of the
+// scheduler and server and then run the scheduler
+//
+static void RunServerL()
+	{
+	TInt options = 0;
+
+	ParseCmdLineOptions(options);
+
+	// NOTE: Insert TraceHeap install here,
+	//		 when RAllocator is available.
+	//
+	// naming the server thread after the server helps to debug panics
+	User::LeaveIfError(User::RenameThread(KServerName));
+
+	// create and install the active scheduler we need
+	CActiveScheduler* s=new(ELeave) CActiveScheduler;
+	CleanupStack::PushL(s);
+	CActiveScheduler::Install(s);
+
+	TServerResources::InitialiseL();
+
+	CleanupStack::PushL(TCleanupItem(CloseTServerResources, 0));
+
+	CSessionManager::NewLC();
+
+	CCentRepSWIWatcher* swiWatcher = 0;
+		
+	if( TServerResources::iInstallDirectory)
+		{		
+		swiWatcher = CCentRepSWIWatcher::NewL(TServerResources::iFs);	
+		CleanupStack::PushL(swiWatcher) ;
+		swiWatcher->Start();
+		}
+
+	CRepositoryBackupClient* backupClient =
+		CRepositoryBackupClient::NewL(TServerResources::iFs);
+
+	CleanupStack::PushL(backupClient) ;
+	backupClient->StartL();
+
+	// check command line options
+	if (options & ESoftReset)
+		{
+		CServerRepository::ResetRepositoriesL();
+		}
+
+	// Initialisation complete, now signal the client
+#ifdef __MYSERVER_NO_PROCESSES__
+	RThread::Rendezvous(KErrNone);
+#else
+	RProcess::Rendezvous(KErrNone);
+#endif
+
+	// Ready to run
+	CActiveScheduler::Start();
+
+	// Delete backup client if it exists
+	if(backupClient)
+		CleanupStack::PopAndDestroy(backupClient);
+
+	// Delete file watcher if it exists
+	if(swiWatcher)
+		CleanupStack::PopAndDestroy(swiWatcher);
+
+	// Ready to exit.
+
+	TServerResources::Close();
+
+	// Cleanup the server and scheduler
+	CleanupStack::PopAndDestroy(2);//CSessionManager, s
+	}
+
+// Entry point for the server
+TInt E32Main()
+	{
+	__UHEAP_MARK;
+
+	CTrapCleanup* cleanup = CTrapCleanup::New();
+	TInt r = KErrNoMemory;
+	if(cleanup)
+		{
+		TRAP(r, RunServerL());
+		delete cleanup;
+		}
+
+	__UHEAP_MARKEND;
+
+	return r;
+	}
+
+#ifdef __MYSERVER_NO_PROCESSES__
+
+// WINS thread entry-point function.
+static TInt ThreadFunction(TAny*)
+	{
+	return E32Main();
+	}
+
+//WINS DLL entry-point, returns the real thread function cast to TInt
+IMPORT_C TInt WinsMain();
+EXPORT_C TInt WinsMain()
+	{
+	return reinterpret_cast<TInt>(&ThreadFunction);
+	}
+
+TInt E32Dll(TDllReason)
+	{
+	return KErrNone;
+	}
+
+#endif //__MYSERVER_NO_PROCESSES__