devsoundextensions/drmaudioplayer/DRMPlayServer/src/DRMPlayServer.cpp
changeset 0 40261b775718
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/devsoundextensions/drmaudioplayer/DRMPlayServer/src/DRMPlayServer.cpp	Tue Feb 02 01:56:55 2010 +0200
@@ -0,0 +1,118 @@
+/*
+* Copyright (c) 2005-2006 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:   DRM Play Server
+*
+*/
+
+
+#include <e32std.h>
+#include <e32svr.h>
+#include "DRMPlayClientServer.h"
+#include "DRMPlayServer.h"
+
+
+
+CDRMPlayServer::CDRMPlayServer(TInt aPriority)
+    : CServer2(aPriority)
+    {
+    }
+
+
+// Create and start a new DRM play server.
+CDRMPlayServer* CDRMPlayServer::New()
+    {
+    CDRMPlayServer *pS=new CDRMPlayServer(EPriority);
+    __ASSERT_ALWAYS(pS!=NULL,PanicServer(ESvrCreateServer));
+    __ASSERT_ALWAYS(pS->Start(KDRMPlayServerName)==KErrNone, PanicServer(ESvrCreateServer));
+    return pS;
+    }
+
+
+// Create a new server session.
+CSession2 *CDRMPlayServer::NewSessionL(const TVersion& aVersion,const RMessage2& aMessage ) const
+    {
+    // check we're the right version
+    TVersion v(KDRMPlayServMajorVersionNumber,KDRMPlayServMinorVersionNumber,KDRMPlayServBuildVersionNumber);
+    if (!User::QueryVersionSupported(v,aVersion))
+        User::Leave(KErrNotSupported);
+    // make new session
+    return CDRMPlayServerSession::NewL(const_cast<CDRMPlayServer*>(this), aMessage);
+    }
+
+CDRMPlayServer::~CDRMPlayServer()
+    {
+
+    }
+
+
+// Panic the server
+GLDEF_C void PanicServer(TDRMPlayServPanic aPanic)
+    {
+    _LIT(KTxtServerPanic,"DRM Play server panic");
+    User::Panic(KTxtServerPanic,aPanic);
+    }
+
+
+static void StartDRMPlayServerL()
+// Perform all server initialisation, in particular creation of the
+// scheduler and server and then run the scheduler
+//
+    {
+
+
+
+    // Naming the server thread after the server helps to debug panics
+
+    User::LeaveIfError(User::RenameThread(KDRMPlayServerName));
+
+    // Create and install the active scheduler we need
+    CActiveScheduler* scheduler = new(ELeave)CActiveScheduler;
+    CActiveScheduler::Install(scheduler);
+
+    // create the server
+    CDRMPlayServer* server = CDRMPlayServer::New();
+
+    // Initialisation complete, now signal the client
+    RProcess::Rendezvous(KErrNone);
+
+    // Start the scheduler and wait for client requests
+    CActiveScheduler::Start();
+
+    // Cleanup the server and scheduler
+    CActiveScheduler::Install(NULL);
+    delete scheduler;
+    delete server;
+    }
+
+TInt E32Main()
+//
+// Server process entry-point
+// Recover the startup parameters and run the server
+//
+    {
+    __UHEAP_MARK;
+    //
+    CTrapCleanup* cleanup=CTrapCleanup::New();
+    TInt r=KErrNoMemory;
+    if (cleanup)
+        {
+        TRAP(r,StartDRMPlayServerL());
+        delete cleanup;
+        }
+    //
+    __UHEAP_MARKEND;
+    return r;
+    }
+
+// End of file