javamanager/javaregistry/legacy/server/src/javaregserver.cpp
branchRCL_3
changeset 14 04becd199f91
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/javamanager/javaregistry/legacy/server/src/javaregserver.cpp	Tue Apr 27 16:30:29 2010 +0300
@@ -0,0 +1,260 @@
+/*
+* Copyright (c) 2005-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:  javaregserver implementation
+*
+*/
+
+
+#include "javaregserver.h"
+#include "javaregserversession.h"
+#include "javaregserverscheduler.h"
+#include "javapropertyarray.h"
+#include "javaregstore.h"
+#include "logger.h"
+
+namespace Java
+{
+namespace Manager
+{
+namespace Registry
+{
+
+/**
+ * Input params to set up CPolicyServer's security policy
+ */
+const TInt KRangeCnt = 3;
+const TInt Ranges[KRangeCnt] =
+{
+    // range for EInitializeServerUseIntegr, EEntryExists,
+    // EGetEntryUids, EGetEntry, EFindEntries
+    0,
+    // range for EInitializeServerTransId, ESetEntry,
+    // ERemoveEntry, EAllocateUids, ESetBackupState
+    EInitializeServerTransId,
+    // rest of requests, that not exist
+    ESetBackupState + 1
+};
+
+const TUint8 PolicyInds[] =
+{
+    // range for EInitializeServerUseIntegr, EEntryExists,
+    // EGetEntryUids, EGetEntry, EFindEntries
+    CPolicyServer::EAlwaysPass,
+    // range for EInitializeServerTransId, ESetEntry,
+    // ERemoveEntry, EAllocateUids, ESetBackupState
+    CPolicyServer::ECustomCheck,
+    // rest of functions, that not exist
+    CPolicyServer::ENotSupported
+};
+
+const CPolicyServer::TPolicy Policy =
+{
+    CPolicyServer::EAlwaysPass,    // on connect
+    KRangeCnt,
+    Ranges,
+    PolicyInds,
+    0 // Mandatory spare
+};
+
+} // namespace Registry
+} // namespace Manager
+} // namespace Java
+
+
+using namespace Java::Manager::Registry;
+
+// ---------------------------------------------------------------------------
+// NewL
+// ---------------------------------------------------------------------------
+CJavaRegServer* CJavaRegServer::NewL()
+{
+    CJavaRegServer* server = new(ELeave) CJavaRegServer();
+
+    CleanupStack::PushL(server);
+    server->ConstructL();
+    CleanupStack::Pop(server);
+
+    return server;
+}
+
+
+// ---------------------------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------------------------
+CJavaRegServer::CJavaRegServer() :
+        CPolicyServer(CActive::EPriorityStandard, Policy, ESharableSessions),
+        iBackupState(ENoBackup),
+        iStore(NULL)
+{
+}
+
+
+// ---------------------------------------------------------------------------
+// ConstructL
+// ---------------------------------------------------------------------------
+void CJavaRegServer::ConstructL()
+{
+    JELOG(EJavaStorage, "CJavaRegServer::ConstructL()");
+    // Start server.
+    StartL(KJavaRegServerName);
+
+    // create store object
+    iStore = CJavaRegStore::NewL();
+}
+
+
+// ---------------------------------------------------------------------------
+// Destructor
+// ---------------------------------------------------------------------------
+CJavaRegServer::~CJavaRegServer()
+{
+    JELOG(EJavaStorage, "CJavaRegServer::~CJavaRegServer()");
+    delete iStore;
+    iStore = NULL;
+}
+
+
+// ---------------------------------------------------------------------------
+// Creates new session
+// ---------------------------------------------------------------------------
+CSession2* CJavaRegServer::NewSessionL(const TVersion & /*aVersion*/,
+                                       const RMessage2& /*aMessage*/
+                                      ) const
+{
+    return new(ELeave) CJavaRegServerSession();
+}
+
+
+// ---------------------------------------------------------------------------
+// Panics client
+// ---------------------------------------------------------------------------
+void CJavaRegServer::PanicClient(const RMessage2&  aMessage,
+                                 TInt aPanic) const
+{
+    WLOG1(EJavaStorage, "Panic Client: %d", aPanic);
+    aMessage.Panic(KJavaRegServerName, aPanic);
+}
+
+
+// ---------------------------------------------------------------------------
+// EntryExistsL
+// ---------------------------------------------------------------------------
+TBool CJavaRegServer::EntryExistsL(TUid aUid)
+{
+    RArray<TUid> allUids;
+    CleanupClosePushL(allUids);
+
+    iStore->GetUidsL(allUids);
+
+    TInt res = allUids.Find(aUid);
+
+    CleanupStack::PopAndDestroy(&allUids);
+
+    return (res != KErrNotFound);
+}
+
+
+// ---------------------------------------------------------------------------
+// GetEntryUidsL
+// ---------------------------------------------------------------------------
+void CJavaRegServer::GetEntryUidsL(RArray<TUid>& aUids, TInt aDrive)
+{
+    if (aDrive < 0)
+    {
+        iStore->GetUidsL(aUids);
+    }
+    else
+    {
+        ELOG1(
+            EJavaStorage,
+            "GetEntryUidsL from drive: %d is not supported",
+            aDrive);
+        User::Leave(KErrNotSupported);
+    }
+}
+
+
+// ---------------------------------------------------------------------------
+// GetEntryL
+// ---------------------------------------------------------------------------
+void CJavaRegServer::GetEntryL(TUid aUid,
+                               CJavaPropertyArray*& aProperties, TBool aAllEntries)
+{
+    if (aUid != TUid::Null())
+    {
+        iStore->ReadPropertiesL(aUid, aProperties, aAllEntries);
+    }
+}
+
+
+// ---------------------------------------------------------------------------
+// FindEntriesL
+// ---------------------------------------------------------------------------
+void CJavaRegServer::FindEntriesL(CJavaPropertyArray& aProperties,
+                                  RArray<TUid>& aFoundUids)
+{
+    iStore->FindEntriesL(aProperties, aFoundUids);
+}
+
+// ---------------------------------------------------------------------------
+// FindAllEntriesL
+// ---------------------------------------------------------------------------
+void CJavaRegServer::FindAllEntriesL(CJavaPropertyArray& aProperties,
+                                     RArray<TUid>& aFoundUids)
+{
+    iStore->FindEntriesL(aProperties, aFoundUids, ETrue);
+}
+
+
+// ---------------------------------------------------------------------------
+// SetBackupState
+// ---------------------------------------------------------------------------
+void CJavaRegServer::SetBackupState(TBackupState aState)
+{
+    iBackupState = aState;
+}
+
+
+// ---------------------------------------------------------------------------
+// LeaveIfBackingUpOrRestoringL
+// ---------------------------------------------------------------------------
+void CJavaRegServer::LeaveIfBackingUpOrRestoringL()
+{
+    if ((iBackupState == EBackuping) || (iBackupState == ERestoring))
+    {
+        User::Leave(KErrServerBusy);
+    }
+}
+
+
+// ---------------------------------------------------------------------------
+// LeaveIfRestoringL
+// ---------------------------------------------------------------------------
+void CJavaRegServer::LeaveIfRestoringL()
+{
+    if (iBackupState == ERestoring)
+    {
+        User::Leave(KErrServerBusy);
+    }
+}
+
+
+// ---------------------------------------------------------------------------
+// Server Loader Part
+// ---------------------------------------------------------------------------
+GLDEF_C TInt E32Main()
+{
+    TInt err = CJavaRegServerScheduler::ThreadStart();
+    return err;
+}