syncmlfw/dm/callbackServer/src/nsmldmcallbackserver.cpp
changeset 0 b497e44ab2fc
child 12 9e9792ae22e3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/syncmlfw/dm/callbackServer/src/nsmldmcallbackserver.cpp	Thu Dec 17 09:07:52 2009 +0200
@@ -0,0 +1,222 @@
+/*
+* Copyright (c) 2005 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:  DM callback server source file
+*
+*/
+
+
+
+// ---------------------------------------------------------------------------
+// Includes
+// ---------------------------------------------------------------------------
+
+#include <f32file.h>
+
+#include <nsmlconstants.h>
+#include <nsmldmdbhandler.h>
+
+#include "nsmldmcallbackserver.h"
+
+// ---------------------------------------------------------------------------
+// constants
+// ---------------------------------------------------------------------------
+
+const TUint32 KNSmlSOSServer = 0x101F99FB;
+const TUint32 KTarmDMUtilServer = 0x10207843; //tarm
+const TUint32 KFotaServer       = 0x102072C4; //fota
+const TUint32 KNSmlDMHostServer1ID = 270506498;  // 0x101F9A02
+const TUint32 KNSmlDMHostServer2ID = 270506499;  // 0x101F9A03
+const TUint32 KNSmlDMHostServer3ID = 270506500;  // 0x101F9A04
+const TUint32 KNSmlDMHostServer4ID = 270506501;  // 0x101F9A05
+
+
+// ---------------------------------------------------------------------------
+// E32Main
+// ---------------------------------------------------------------------------
+GLDEF_C TInt E32Main() // main function called by E32
+{
+    LaunchServer();
+    return KErrNone;
+}
+
+// ---------------------------------------------------------------------------
+// LaunchServer()
+// The only exported function of exedll for launching the server
+// ---------------------------------------------------------------------------
+TInt LaunchServer()
+    {
+    // check server not already started
+	TFindServer findServer(KNSmlDmCallbackServerName);
+	TFullName name;
+	if ( findServer.Next(name) == KErrNone )
+		{ // found server already 
+		return KErrGeneral;
+		}
+
+	TInt error = CNSmlDmCallbackServer::ThreadFunction( NULL );
+    return error;
+    }
+
+// ===========================================================================
+// CNSmlDmCallbackServer
+// ===========================================================================
+
+
+// ---------------------------------------------------------------------------
+// CNSmlDmCallbackServer::PanicServer
+// ---------------------------------------------------------------------------
+void CNSmlDmCallbackServer::PanicServer( TNSmlDmCallbackServerPanic aPanic )
+    {
+	_LIT(KTxtServer,"NSmlDmCallbackServer");
+	User::Panic(KTxtServer,aPanic);
+    }
+
+// ---------------------------------------------------------------------------
+// CNSmlDmCallbackServer::ThreadFunction
+// ---------------------------------------------------------------------------
+TInt CNSmlDmCallbackServer::ThreadFunction(TAny* /*aStarted*/)
+	{
+    __UHEAP_MARK;
+	// create cleanup stack
+    CTrapCleanup* cleanup = CTrapCleanup::New();
+	if ( !cleanup )
+	    {
+	    PanicServer(ECleanupCreateError);
+	    }    
+	// construct and install active scheduler
+	CActiveScheduler* scheduler = new CActiveScheduler;
+	__ASSERT_ALWAYS( scheduler,PanicServer(EMainSchedulerError) );
+	CActiveScheduler::Install( scheduler );
+
+	// construct server
+    CNSmlDmCallbackServer* server=0;
+    TRAPD( err, server = CNSmlDmCallbackServer::NewL());
+    RProcess::Rendezvous( err );
+	// start handling requests
+	CActiveScheduler::Start();
+	
+    delete server;
+    delete scheduler;    
+    delete cleanup;
+    __UHEAP_MARKEND;
+    return KErrNone;
+	}
+	
+// ---------------------------------------------------------------------------
+// CNSmlDmCallbackServer::NewL()
+// ---------------------------------------------------------------------------
+CNSmlDmCallbackServer* CNSmlDmCallbackServer::NewL()
+	{
+	CNSmlDmCallbackServer* self = new (ELeave) CNSmlDmCallbackServer();
+	CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop(); // self
+	self->StartL(KNSmlDmCallbackServerName);
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CNSmlDmCallbackServer::CNSmlDmCallbackServer() 
+// ---------------------------------------------------------------------------
+CNSmlDmCallbackServer::CNSmlDmCallbackServer() :
+	CServer2(EPriorityStandard, ESharableSessions)
+	{
+	}
+
+// ---------------------------------------------------------------------------
+// CNSmlDmCallbackServer::ConstructL()
+// ---------------------------------------------------------------------------
+void CNSmlDmCallbackServer::ConstructL()
+    {
+   	iDbHandler = CNSmlDmDbHandler::NewL();
+    }
+
+// ---------------------------------------------------------------------------
+// CNSmlDmCallbackServer::~CNSmlDmCallbackServer()
+// ---------------------------------------------------------------------------
+CNSmlDmCallbackServer::~CNSmlDmCallbackServer()
+	{
+	delete iDbHandler;
+    }
+
+// ---------------------------------------------------------------------------
+// CNSmlDmCallbackServer::NewSessionL()
+// ---------------------------------------------------------------------------
+CSession2* CNSmlDmCallbackServer::NewSessionL( const TVersion& aVersion,
+	const RMessage2& aMessage ) const
+	{
+	TVersion v(KNSmlDmCallbackServerVersionMajor,
+		KNSmlDmCallbackServerVersionMinor, 0);
+		
+	if( !User::QueryVersionSupported(v,aVersion) )
+		{
+		User::Leave(KErrNotSupported);
+		}
+
+	TUint32 idOfCaller = aMessage.SecureId().iId;
+	if ( idOfCaller != KNSmlSOSServer &&
+			idOfCaller != KNSmlDMHostServer1ID &&
+			idOfCaller != KNSmlDMHostServer2ID &&
+			idOfCaller != KNSmlDMHostServer3ID &&
+			idOfCaller != KNSmlDMHostServer4ID &&
+			idOfCaller != KTarmDMUtilServer  && 
+            idOfCaller != KFotaServer  // fota
+            ) 
+		{
+		_LIT_SECURITY_POLICY_S0 ( mySidPolicy, KNSmlSOSServerSecureID );
+    	mySidPolicy().CheckPolicy ( aMessage );
+		}
+
+	return CNSmlDmCallbackSession::NewL( (CNSmlDmCallbackServer&)*this ); 
+	}
+
+
+// ---------------------------------------------------------------------------
+// CNSmlDmCallbackServer::Increase()
+// ---------------------------------------------------------------------------
+void CNSmlDmCallbackServer::Increase()
+	{
+	iCount++;
+	}
+
+// ---------------------------------------------------------------------------
+// CNSmlDmCallbackServer::Decrease()
+// ---------------------------------------------------------------------------
+void CNSmlDmCallbackServer::Decrease()
+	{
+	iCount--;
+    if ( iCount < 1 )
+        {
+        CActiveScheduler::Stop();   
+        }
+	}
+
+// ---------------------------------------------------------------------------
+// CNSmlDmCallbackServer::Count()
+// ---------------------------------------------------------------------------
+TInt CNSmlDmCallbackServer::Count()
+	{
+	return iCount;
+	}
+
+
+// ---------------------------------------------------------------------------
+// CNSmlDmCallbackServer::DbHandler()
+// ---------------------------------------------------------------------------
+CNSmlDmDbHandler* CNSmlDmCallbackServer::DbHandler()
+	{
+	return iDbHandler;
+	}
+
+// End of file