javacommons/jvms/nativeportlayer/src.s60/jvmnativeportlayer.cpp
author hgs
Fri, 15 Oct 2010 12:29:39 +0300
changeset 80 d6dafc5d983f
parent 21 2a9601315dfc
permissions -rw-r--r--
v2.2.19_1

/*
* Copyright (c) 2008-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:  CJvmNativePortLayer
*
*/


#include <flogger.h>

#include "logger.h"
#include "mjvmnativeportlayer.h"
#include "mjavafile.h"
#include "javafile.h"
#include "jvmnativeportlayer.h"

using namespace javaruntime;

MJvmNativePortLayer* CJvmNativePortLayer::NewL(void)
{
    JELOG2(EJVM);
    CJvmNativePortLayer* portLayer = new(ELeave) CJvmNativePortLayer;
    portLayer->Construct();
    return portLayer;
}

CJvmNativePortLayer::CJvmNativePortLayer()
{
    JELOG2(EJVM);
}

CJvmNativePortLayer::~CJvmNativePortLayer()
{
    JELOG2(EJVM);
    iRedirector.close();
}


_LIT(KOutpuDir,"java");
_LIT(KOutpuFullDir,"c:\\logs\\java");
_LIT(KConsole,"vmconsole.txt");

void CJvmNativePortLayer::Construct()
{
    JELOG2(EJVM);

    RFs rfs;
    TUint dummy;

    if (rfs.Connect() != KErrNone)
    {
        iLogging = EFalse;
        return;
    }
    if (rfs.Att(KOutpuFullDir, dummy) != KErrNone)
    {
        iLogging = EFalse;
    }
    else
    {
        iLogging = ETrue;
    }
    rfs.Close();

    iRedirector.connect();
}

MJavaFile* CJvmNativePortLayer::GetJavaFileL()
{
    JELOG2(EJVM);
    return new(ELeave) CJavaFile();
}

void CJvmNativePortLayer::WriteToStdoutL(const TDesC8& aData)
{
    if (iLogging)
    {
        RFileLogger::Write(KOutpuDir, KConsole, EFileLoggingModeAppendRaw, aData);
    }
    iRedirector.systemOut(aData);
}
void CJvmNativePortLayer::WriteToStderrL(const TDesC8& aData)
{
    if (iLogging)
    {
        RFileLogger::Write(KOutpuDir, KConsole, EFileLoggingModeAppendRaw, aData);
    }
    iRedirector.systemErr(aData);
}


EXPORT_C MJvmNativePortLayer* javaruntime::GetPortLayerL()
{
    JELOG2(EJVM);
    return CJvmNativePortLayer::NewL();
}

const TThreadPriority priorityMapping[] =
{
    EPriorityMuchLess, //0
    EPriorityMuchLess, //1
    EPriorityMuchLess, //2
    EPriorityMuchLess, //3
    EPriorityMuchLess, //4
    EPriorityLess,     //5
    EPriorityLess,     //6
    EPriorityLess,     //7
    EPriorityLess,     //8
    EPriorityNormal,   //9
    EPriorityNormal,   //10
    EPriorityMore,     //11
};

EXPORT_C TThreadPriority javaruntime::GetSingleThreadPriority(const TInt& aJavaPriority)
{
    JELOG2(EJVM);
    TInt index = Max(Min(aJavaPriority,11),0);
    return priorityMapping[index];
}