javauis/javalegacyutils/javasrc/com/nokia/mj/impl/rt/legacy/MIDEventServer.java
branchRCL_3
changeset 19 04becd199f91
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/javalegacyutils/javasrc/com/nokia/mj/impl/rt/legacy/MIDEventServer.java	Tue Apr 27 16:30:29 2010 +0300
@@ -0,0 +1,93 @@
+/*
+* Copyright (c) 1999-2010 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:
+*
+*/
+
+
+
+package com.nokia.mj.impl.rt.legacy;
+
+public class MIDEventServer
+{
+    private static final int MAX_USER_NAME=64;
+
+    private final int iHandle;
+    /**
+     *  Construct a named EPOC event server system.
+     *  <p>
+     *  The server and event threads manage EPOC event notification
+     *  and propogation of those events back to Java.
+     *
+     *  The native server handle should be passed through to
+     *  native event sources to bind to this event server.
+     *  @see getHandle
+     *  @param aName The event server system to use
+     */
+    public MIDEventServer(String aName)
+    {
+        super();
+        iHandle = openEventServer(aName, new DefaultFactory());
+    }
+
+    protected MIDEventServer(String aName, MIDEventServerFactory aFactory)
+    {
+        super();
+        iHandle = openEventServer(aName, aFactory);
+    }
+
+    private int openEventServer(String aName, MIDEventServerFactory aFactory)
+    {
+        //
+        if (aName.length()>MAX_USER_NAME)
+        {
+            throw new IllegalArgumentException();
+        }
+        int server = aFactory.createServer(aName);
+        NativeError.checkOOM(server);
+        return server;
+    }
+    /**
+     *  Get the server handle for passing through to native
+     *  event sources.
+     * @returns The handle of the native event server
+     */
+    public int getHandle()
+    {
+        return iHandle;
+    }
+
+    public void shutdown()
+    {
+        _shutdown(iHandle);
+    }
+
+    private class DefaultFactory implements MIDEventServerFactory
+    {
+        DefaultFactory()
+        {
+        }
+        public int createServer(String aName)
+        {
+            return _createServer(aName);
+        }
+    }
+
+    /**
+     *  Native methods required to implement getServer()
+     */
+    private native void _shutdown(int aHandle);
+    private native int _createServer(String aName);
+};
+