--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/m2g_akn/src/M2GGeneral.cpp Tue Apr 27 16:30:29 2010 +0300
@@ -0,0 +1,287 @@
+/*
+* Copyright (c) 2005-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: General methods
+*
+*/
+
+// INCLUDE FILES
+#include <s32strm.h> // RWriteStream
+
+
+#ifdef M2G_INFO_POPUP
+#include <eikenv.h> // CEikonEnv::InfoWinL
+#endif
+
+#include <jni.h>
+
+#include <SvgJavaInterfaceImpl.h>
+#include "M2GGeneral.h"
+
+
+M2G_NS_START
+
+// EXTERNAL DATA STRUCTURES
+
+// EXTERNAL FUNCTION PROTOTYPES
+
+// CONSTANTS
+
+// MACROS
+
+// LOCAL CONSTANTS AND MACROS
+
+// MODULE DATA STRUCTURES
+
+// LOCAL FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+
+// -----------------------------------------------------------------------------
+// M2GGeneral::RaiseException
+// -----------------------------------------------------------------------------
+void M2GGeneral::RaiseException(
+ JNIEnv* aEnv, const TDesC8& aName, const TUint8* aMsg)
+{
+ M2G_DEBUG_0("#### M2G_DEBUG: M2GGeneral::RaiseException() ####");
+
+ if (aEnv)
+ {
+ jclass clazz = aEnv->FindClass(
+ REINTERPRET_CAST(const char*, aName.Ptr()));
+
+ if (!clazz)
+ {
+ // if exception class not found, then use java.lang.Exception
+ clazz = aEnv->FindClass(
+ REINTERPRET_CAST(const char*, KJavaExceptionClass().Ptr()));
+ }
+
+ aEnv->ThrowNew(clazz, REINTERPRET_CAST(const char*, aMsg));
+ }
+}
+
+// -----------------------------------------------------------------------------
+// M2GGeneral::CheckErrorCode
+// -----------------------------------------------------------------------------
+TInt M2GGeneral::CheckErrorCode(JNIEnv* aEnv, TInt aErrorCode)
+{
+ M2G_DEBUG_1("M2G_DEBUG: M2GGeneral::CheckErrorCode: %d - begin", aErrorCode);
+ TInt code = aErrorCode;
+ const TUint8* msg = (STATIC_CAST(const TDesC8&, KM2GEmptyString8)).Ptr();
+ jcfcommon::auto_ptr<MJavaError> error;
+
+ // Check if an error object
+ if (aErrorCode > 0)
+ {
+ M2G_DEBUG_0("M2G_DEBUG: M2GGeneral::CheckErrorCode(), is MJavaError");
+
+ // Error object need to be deleted here and the auto_ptr takes care of that!!
+ error.reset(JavaUnhand< MJavaError >(aErrorCode));
+
+ // Get an error description through the MJavaError object
+ msg = error->Description().Ptr();
+
+ switch (error->ErrorCode())
+ {
+ case KM2GIOException:
+ {
+ code = error->ErrorCode();
+ }
+ default:
+ {
+ code = error->ErrorCode();
+ }
+ }
+ M2G_DEBUG_1("M2G_DEBUG: M2GGeneral::CheckErrorCode(), MJavaError: error code=%d", code);
+ }
+
+ switch (code)
+ {
+ case KM2GMemoryNotOk:
+ {
+ M2G_DEBUG_0("#### M2G_DEBUG: M2GGeneral::CheckErrorCode() - OutOfMemoryError ####");
+ M2GGeneral::RaiseException(aEnv, KJavaOutOfMemoryErrorClass, msg);
+ return code;
+ }
+ case KM2GIOException:
+ {
+ M2G_DEBUG_0("#### M2G_DEBUG: M2GGeneral::CheckErrorCode() - IOException ####");
+ M2GGeneral::RaiseException(aEnv, KJavaIOExceptionClass, msg);
+ return code;
+ }
+ case KM2GHandleNotOk:
+ {
+ M2G_DEBUG_0("#### M2G_DEBUG: M2GGeneral::CheckErrorCode() - NullPointerException ####");
+ M2GGeneral::RaiseException(aEnv, KJavaNullPointerException, msg);
+ return code;
+ }
+ default:
+ {
+ M2G_DEBUG_1("M2G_DEBUG: M2GGeneral::CheckErrorCode() error code=%d - end", code);
+ return code;
+ }
+ }
+}
+
+// -----------------------------------------------------------------------------
+// M2GGeneral::CheckHandle
+// -----------------------------------------------------------------------------
+TInt M2GGeneral::CheckHandle(JNIEnv* aEnv, TInt aHandle)
+{
+ if (aHandle == M2G_INVALID_HANDLE)
+ {
+ M2GGeneral::RaiseException(aEnv, KJavaNullPointerException);
+ }
+ if (aHandle < 0)
+ {
+ M2GGeneral::CheckErrorCode(aEnv, aHandle);
+ }
+ return aHandle;
+}
+
+// -----------------------------------------------------------------------------
+// M2GGeneral::CheckErrorCodeAndHandle
+// -----------------------------------------------------------------------------
+TInt M2GGeneral::CheckErrorCodeAndHandle(
+ JNIEnv* aEnv, TInt aErrorCode, TInt aHandle, TInt aErrorResult)
+{
+ if ((aErrorCode == KM2GOk) && (aHandle != M2G_INVALID_HANDLE))
+ {
+ return aHandle;
+ }
+ if (aErrorCode != KM2GOk)
+ {
+ M2GGeneral::CheckErrorCode(aEnv, aErrorCode);
+ }
+ else if (aHandle == M2G_INVALID_HANDLE)
+ {
+ M2GGeneral::RaiseException(aEnv, KJavaOutOfMemoryErrorClass);
+ }
+ return aErrorResult;
+}
+
+// -----------------------------------------------------------------------------
+// M2GGeneral::PopupInfo
+// -----------------------------------------------------------------------------
+#ifdef M2G_INFO_POPUP
+void M2GGeneral::PopupInfo(
+ const TDesC& aLine1,
+ const TDesC& aLine2)
+{
+ TInt err = KM2GOk;
+ TRAP(err, CEikonEnv::InfoWinL(aLine1, aLine2));
+ if (err == KM2GOk)
+ {
+ // DUMMY
+ }
+}
+#endif // M2G_INFO_POPUP
+
+
+#ifdef M2G_STATISTIC_DEBUG
+// -----------------------------------------------------------------------------
+// M2GGeneral::TM2GStatistic::TM2GStatistic
+// -----------------------------------------------------------------------------
+M2GGeneral::TM2GStatistic::TM2GStatistic()
+{
+ Reset();
+}
+
+// -----------------------------------------------------------------------------
+// M2GGeneral::TM2GStatistic::Reset()
+// -----------------------------------------------------------------------------
+void M2GGeneral::TM2GStatistic::Reset()
+{
+ // Time
+ iStartTime.UniversalTime();
+ iEndTime.UniversalTime();
+ // Thread
+ iId = RThread().Id();
+ RThread thread;
+ if (thread.Open(iId) == KM2GOk)
+ {
+ iThreadName = thread.Name();
+ thread.Close();
+ }
+}
+
+// -----------------------------------------------------------------------------
+// M2GGeneral::TM2GStatistic::Print()
+// -----------------------------------------------------------------------------
+void M2GGeneral::TM2GStatistic::Print(TBool aPrintElapsedTime)
+{
+ TInt totalRom = 0;
+ TInt totalRam = 0;
+ TInt freeRam = 0;
+ HAL::Get(HALData::EMemoryROM, totalRom);
+ HAL::Get(HALData::EMemoryRAM, totalRam);
+ HAL::Get(HALData::EMemoryRAMFree, freeRam);
+
+ // Update time
+ iEndTime.UniversalTime();
+
+ M2G_DEBUG_0("====================================================");
+ // Write memory info
+ if (aPrintElapsedTime)
+ {
+ M2G_DEBUG_5(
+ "Rom size:%d, ram size:%d, ram free:%d, ram used:%d, elapsed time:%d",
+ totalRom >> 10,
+ totalRam >> 10,
+ freeRam >> 10,
+ (totalRam - freeRam) >> 10,
+ iEndTime.MicroSecondsFrom(iStartTime).Int64());
+ }
+ else
+ {
+ M2G_DEBUG_4(
+ "Rom size:%d, ram size:%d, ram free:%d, ram used:%d",
+ totalRom >> 10,
+ totalRam >> 10,
+ freeRam >> 10,
+ (totalRam - freeRam) >> 10);
+ }
+ // Write thread info
+ RThread thread;
+ if (thread.Open(iId) == KM2GOk)
+ {
+ TThreadStackInfo stackInfo;
+ thread.StackInfo(stackInfo);
+ thread.Close();
+ TUint id = iId;
+ M2G_DEBUG_2("Thread id:%d, size:%d", id, (stackInfo.iBase - stackInfo.iLimit) >> 10);
+ }
+ M2G_DEBUG_0("====================================================");
+}
+
+// -----------------------------------------------------------------------------
+// M2GGeneral::TM2GStatistic::Print()
+// -----------------------------------------------------------------------------
+void M2GGeneral::TM2GStatistic::Print(RWriteStream& /*aStream*/)
+{
+}
+
+// -----------------------------------------------------------------------------
+// M2GGeneral::TM2GStatistic::Log()
+// -----------------------------------------------------------------------------
+void M2GGeneral::TM2GStatistic::Log()
+{
+ M2G_DEBUG_0("M2GGeneral::TM2GStatistic::Log()");
+ M2GGeneral::TM2GStatistic statistic;
+ statistic.Print();
+}
+
+#endif // M2G_STATISTIC_DEBUG
+
+M2G_NS_END