--- /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;
+}