javauis/javalegacyutils/src/eventserver/J9MIDEventServer.cpp
changeset 76 4ad59aaee882
parent 69 773449708c84
child 79 2f468c1958d0
--- a/javauis/javalegacyutils/src/eventserver/J9MIDEventServer.cpp	Thu Sep 02 20:20:40 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,268 +0,0 @@
-/*
-* Copyright (c) 2006-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:
-*
-*/
-
-
-#include <hal.h>
-
-#include <e32def.h>
-#include <e32const.h>
-
-#include "eventserverglobals.h"
-#include "CJavaEventServer.h"
-#include "com_nokia_mj_impl_rt_legacy_MemoryUtil.h"
-#include "com_nokia_mj_impl_rt_legacy_EventProcessor.h"
-
-RArray<TInt>& EventServerHandles(); //Must be consistent with implementation
-//in MIDEventServer.cpp in jniutils
-
-
-const TInt KQueueGranularity = 100; // Define iQueue default granularity
-const TInt KCompressThreshold = 100; // Define number of processed events
-
-
-void InitEventServer()
-{
-    TRAPD(err, CEventQueue::InitL());
-    if (err != KErrNone)
-    {
-        User::Panic(_L("EventServer::can't initialize event queue"), err);
-    }
-}
-
-// Cleanup the event server; called from Java event dispatch thread
-void CleanupEventServer()
-{
-    CJavaEventServer::Cleanup(EventServerHandles());
-}
-
-// Dispatch event to Java, called from Java event dispatch thread
-void RunJavaEventServer(JNIEnv* aJni, TInt aServer)
-{
-    CJavaEventBase* ev = (CJavaEventBase*) aServer;
-    if (aServer != KErrServerTerminated)
-    {
-        ev->Run(*aJni);
-    }
-}
-
-
-JNIEXPORT jlong JNICALL Java_com_nokia_mj_impl_rt_legacy_MemoryUtil__1getFreeRAMInKB(JNIEnv*, jclass)
-{
-    TInt mem = 0;
-    TInt err = HAL::Get(HALData::EMemoryRAMFree, mem);
-    if (err == KErrNone)
-    {
-        return mem / 1024;
-    }
-    else
-    {
-        return err;
-    }
-}
-
-JNIEXPORT void JNICALL Java_com_nokia_mj_impl_rt_legacy_EventProcessor__1dispatchCallbacks(JNIEnv* aJni, jclass /*aClass*/, jint aThread)
-{
-    TInt eventServer;
-    // Loop for event dispatching
-    InitEventServer();
-    while ((eventServer = CEventQueue::GetQueue(aThread)->GetNext()) != 0)
-    {
-        RunJavaEventServer(aJni, eventServer);
-    }
-}
-
-JNIEXPORT void JNICALL Java_com_nokia_mj_impl_rt_legacy_EventProcessor__1exitThreads(JNIEnv*, jclass)
-{
-    CEventQueue::OnCloseThreads();
-}
-// class CIntQueue
-CIntQueue::CIntQueue() : iQueue(KQueueGranularity), iCompressCounter(0)
-{
-}
-
-CIntQueue* CIntQueue::NewL()
-{
-    CIntQueue* self = NewLC();
-    CleanupStack::Pop(self);
-    return self;
-}
-
-CIntQueue* CIntQueue::NewLC()
-{
-    CIntQueue* self = new(ELeave) CIntQueue();
-    CleanupStack::PushL(self);
-    self->ConstructL();
-
-    return self;
-}
-
-void CIntQueue::ConstructL()
-{
-    iMutex.CreateLocal();
-    iFull.CreateLocal(0);
-}
-
-CIntQueue::~CIntQueue()
-{
-    iMutex.Close();
-    iFull.Close();
-    iQueue.Close();
-}
-
-// Add integer to the end of the queue
-void CIntQueue::Enqueue(TInt aValue)
-{
-    iMutex.Wait();             // enter critical region
-    PutItem(aValue);           // put new item to the buffer
-    iMutex.Signal();           // leave critical region
-    iFull.Signal();            // inform dispatcher about new event
-}
-
-// Return integer from the beginning of the queue
-TInt CIntQueue::Dequeue()
-{
-    iFull.Wait();              // decrement count of full slots
-    iMutex.Wait();             // enter critical region
-    TInt ret = RemoveItem();   // take item from the buffer
-    iMutex.Signal();           // leave critical region
-
-    return ret;
-}
-
-void CIntQueue::PutItem(TInt aValue)
-{
-    TInt err = iQueue.Append(aValue); // put new item to the buffer
-    __ASSERT_ALWAYS((err == KErrNone), User::Invariant());
-}
-
-TInt CIntQueue::RemoveItem()
-{
-    TInt ret = iQueue[0];      // take item from the buffer
-    iQueue.Remove(0);
-
-    iCompressCounter++;
-    if (iCompressCounter == KCompressThreshold)
-    {
-        iQueue.GranularCompress();
-        iCompressCounter = 0;
-    }
-
-    return ret;
-}
-
-TBool CIntQueue::IsEmpty()
-{
-    return (iQueue.Count() == 0);
-}
-
-/* ******************************************** */
-
-CEventQueue* CEventQueue::GetQueue(TInt aThread)
-{
-    return getEsStaticData()->mLocks[aThread];
-}
-
-CEventQueue::CEventQueue()
-{
-}
-
-void CEventQueue::ConstructL()
-{
-    iEventQueue = CIntQueue::NewL();
-}
-
-CEventQueue::~CEventQueue()
-{
-    while (!iEventQueue->IsEmpty())
-    {
-        TInt event = GetNext();
-        if (event != KErrServerTerminated)
-        {
-            CJavaEventBase* ev = reinterpret_cast<CJavaEventBase*>(event);
-            CJavaEventSourceBase& source = ev->Object();
-
-            if (ev->IsDisposable())
-            {
-                delete ev;
-            }
-            source.OnVmClose();
-        }
-    }
-    delete iEventQueue;
-}
-
-// Notify that new event has been posted. Called from the native code.
-// aEventServer is C++ pointer to event server object and aThreadNumber indicates the event type
-// and therefore which dispatcher thread should handle it
-
-void CEventQueue::NotifyServer(TInt aEventServer, TInt aThreadNumber)
-{
-    ASSERT(aThreadNumber < KDispatchThreads);
-
-    // Add event server of an event to the queue
-    GetQueue(aThreadNumber)->iEventQueue->Enqueue(aEventServer);
-
-}
-
-// Get the next event server from the queue; wait if there are no events to be dispatched
-TInt CEventQueue::GetNext()
-{
-    return iEventQueue->Dequeue();
-}
-
-void CEventQueue::OnCloseThreads()
-{
-    //sends fake zero events to exit from native loop back to java
-    for (int i = 0; i < KDispatchThreads; i++)
-    {
-        GetQueue(i)->NewEvent(0);
-    }
-}
-
-// Add event server of an event to the queue
-void CEventQueue::NewEvent(TInt aEventServer)
-{
-    iEventQueue->Enqueue(aEventServer);
-}
-
-
-void CEventQueue::Cleanup()
-{
-    EventServerGlobals* esd = getEsStaticData();
-    for (int i = 0; i < KDispatchThreads; i++)
-    {
-        delete esd->mLocks[i];
-        esd->mLocks[i] = 0;
-    }
-}
-
-void CEventQueue::InitL()
-{
-    EventServerGlobals* esd = getEsStaticData();
-    for (int i = 0; i < KDispatchThreads; i++)
-    {
-        if (esd->mLocks[i] == 0)
-        {
-            CEventQueue* self = new(ELeave) CEventQueue();
-            CleanupStack::PushL(self);
-            self->ConstructL();
-            CleanupStack::Pop();
-            esd->mLocks[i] = self;
-        }
-    }
-}
-