javaruntimes/midp/runtimestarter/src/main.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 14 May 2010 15:47:24 +0300
changeset 23 98ccebc37403
parent 21 2a9601315dfc
permissions -rw-r--r--
Revision: v2.1.24 Kit: 201019

/*
* Copyright (c) 2009-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:  This class provides container for message.
*
*/


/*

MISSING FEATURES:

Localized names for MIDlets
 The developer should be able to define localized names for MIDlets.
 The proposed format is described in RM-RIM CR 417-16269:
 Java: Support for localized application name.
 MIDP3 will define also format for the same purpose.

*/

#include <unistd.h>

#include "logger.h"
#include "javaoslayer.h"
#include "runtimeexception.h"
#include "exceptionbase.h"

#include "midpruntimestarter.h"

#ifdef __SYMBIAN32__
#include "javauids.h"
#endif

using namespace java::runtime;
using namespace java::util;


#ifndef __SYMBIAN32__
extern "C"
#endif //__SYMBIAN32__
int dllMain(int argc, char *argv[])
{
    JELOG(EJavaRuntime, "MIDP main()");
    LOG(EJavaRuntime, EInfo, "MipdRuntime started");
#ifdef __SYMBIAN32__
#ifndef _DEBUG
    // The only process allowed to start the MIDP is Java Captain.
    // Check is done only by release build.
    TSecureId sid = User::CreatorSecureId();
    if (sid != KJavaCaptainUid)
    {
        ELOG1(EJavaRuntime, "MipdRuntime main() creted by process having "
              "secure id: %X ", sid.iId);
        return -1;
    }
#endif
#endif

    JavaOsLayer::startUpTrace("Midp main", -1, -1);
    int result = -1;
    try
    {
        // MidpRuntimeStarter object is used to start the MIDP runtime.
        std::auto_ptr<MidpRuntimeStarter>
        starter(new MidpRuntimeStarter()); // codescanner::nonleavenew
        result = starter->start(argc, argv);
    }
    catch (RuntimeException& e)
    {
        ELOG1(EJavaRuntime, "MipdRuntime main() RuntimeException catched: %s ",
              e.toString().c_str());
    }

    catch (ExceptionBase& e)
    {
        ELOG1(EJavaRuntime, "MipdRuntime main() ExceptionBase catched: %s ",
              e.toString().c_str());
    }

    catch (std::exception& e)
    {

        ELOG1(EJavaRuntime, "MipdRuntime main() Exception %s catched", e.what());
    }

    LOG1(EJavaRuntime, EInfo, "MipdRuntime exited with status %d", result);
    return result;
}


#ifdef __SYMBIAN32__
#include "javasymbianoslayer.h"

/**
 * Finds exported methods of this dll. This is used by the utility
 * DynamicLibLoader.
 * @param funcName Name of the method the be searched.
 * @param indetifier A string identifier for different runtimes. This
 *        identifier is passed to the JVM args modifier.
 * @return valid function pointer to the searched methodon succes case, 0
 *         on error case.
 */
EXPORT_C FuncPtr findDllMethod(const char* methodName)
{
    FuncPtr ptr = 0;
    if (strcmp(methodName, "dllMain") == 0)
    {
        ptr = (FuncPtr)dllMain;
    }
    return ptr;
}
#endif //__SYMBIAN32__