|
1 /* |
|
2 * Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). |
|
3 * All rights reserved. |
|
4 * This component and the accompanying materials are made available |
|
5 * under the terms of "Eclipse Public License v1.0" |
|
6 * which accompanies this distribution, and is available |
|
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html". |
|
8 * |
|
9 * Initial Contributors: |
|
10 * Nokia Corporation - initial contribution. |
|
11 * |
|
12 * Contributors: |
|
13 * |
|
14 * Description: CJvmNativePortLayer |
|
15 * |
|
16 */ |
|
17 |
|
18 |
|
19 #include <flogger.h> |
|
20 |
|
21 #include "logger.h" |
|
22 #include "mjvmnativeportlayer.h" |
|
23 #include "mjavafile.h" |
|
24 #include "javafile.h" |
|
25 #include "jvmnativeportlayer.h" |
|
26 |
|
27 using namespace javaruntime; |
|
28 |
|
29 MJvmNativePortLayer* CJvmNativePortLayer::NewL(void) |
|
30 { |
|
31 JELOG2(EJVM); |
|
32 CJvmNativePortLayer* portLayer = new(ELeave) CJvmNativePortLayer; |
|
33 CleanupStack::PushL(portLayer); |
|
34 portLayer->ConstructL(); |
|
35 CleanupStack::Pop(portLayer); |
|
36 return portLayer; |
|
37 } |
|
38 |
|
39 CJvmNativePortLayer::CJvmNativePortLayer():iStdOut(0), iStdErr(0) |
|
40 { |
|
41 JELOG2(EJVM); |
|
42 } |
|
43 |
|
44 CJvmNativePortLayer::~CJvmNativePortLayer() |
|
45 { |
|
46 JELOG2(EJVM); |
|
47 if (iStdOut != 0) |
|
48 { |
|
49 delete iStdOut; |
|
50 iStdOut = 0; |
|
51 } |
|
52 if (iStdErr != 0) |
|
53 { |
|
54 delete iStdErr; |
|
55 iStdErr = 0; |
|
56 } |
|
57 iRedirector.close(); |
|
58 } |
|
59 |
|
60 |
|
61 _LIT(KOutpuDir,"java"); |
|
62 _LIT(KOutpuFullDir,"c:\\logs\\java"); |
|
63 _LIT(KConsole,"vmconsole.txt"); |
|
64 |
|
65 void CJvmNativePortLayer::ConstructL(void) |
|
66 { |
|
67 JELOG2(EJVM); |
|
68 _LIT(KStdOut,"stdout_%02i%02i_%02i%02i%02i.txt"); |
|
69 _LIT(KStdErr,"stderr_%02i%02i_%02i%02i%02i.txt"); |
|
70 iStdOut = HBufC::NewL(KDesLength); |
|
71 iStdErr = HBufC::NewL(KDesLength); |
|
72 |
|
73 RFs rfs; |
|
74 TUint dummy; |
|
75 |
|
76 if (rfs.Connect() != KErrNone) |
|
77 { |
|
78 iLogging = EFalse; |
|
79 return; |
|
80 } |
|
81 if (rfs.Att(KOutpuFullDir, dummy) != KErrNone) |
|
82 { |
|
83 iLogging = EFalse; |
|
84 } |
|
85 else |
|
86 { |
|
87 iLogging = ETrue; |
|
88 TTime time; |
|
89 time.HomeTime(); |
|
90 TDateTime dt = time.DateTime(); |
|
91 |
|
92 iStdOut->Des().Format(KStdOut, dt.Month()+1, dt.Day()+1, |
|
93 dt.Hour(), dt.Minute(), dt.Second()); |
|
94 iStdErr->Des().Format(KStdErr, dt.Month()+1, dt.Day()+1, |
|
95 dt.Hour(), dt.Minute(), dt.Second()); |
|
96 } |
|
97 rfs.Close(); |
|
98 |
|
99 iRedirector.connect(); |
|
100 } |
|
101 |
|
102 MJavaFile* CJvmNativePortLayer::GetJavaFileL() |
|
103 { |
|
104 JELOG2(EJVM); |
|
105 MJavaFile* javaFile = CJavaFile::NewL(); |
|
106 return javaFile; |
|
107 } |
|
108 |
|
109 void CJvmNativePortLayer::WriteToStdoutL(const TDesC8& aData) |
|
110 { |
|
111 if (iLogging) |
|
112 { |
|
113 // RFileLogger::Write( KOutpuDir, *iStdOut, EFileLoggingModeAppendRaw, aData); |
|
114 RFileLogger::Write(KOutpuDir, KConsole, EFileLoggingModeAppendRaw, aData); |
|
115 } |
|
116 iRedirector.systemOut(aData); |
|
117 } |
|
118 void CJvmNativePortLayer::WriteToStderrL(const TDesC8& aData) |
|
119 { |
|
120 if (iLogging) |
|
121 { |
|
122 // RFileLogger::Write( KOutpuDir, *iStdErr, EFileLoggingModeAppendRaw, aData); |
|
123 RFileLogger::Write(KOutpuDir, KConsole, EFileLoggingModeAppendRaw, aData); |
|
124 } |
|
125 iRedirector.systemErr(aData); |
|
126 } |
|
127 |
|
128 |
|
129 |
|
130 //Obsolite method, but keeping to be in sync with legacy |
|
131 EXPORT_C void CJvmNativePortLayer::SetPointerToCafMethod(TBool(* /*aUseCafForFileOpen*/)(const TDesC&)) |
|
132 { |
|
133 JELOG2(EJVM); |
|
134 } |
|
135 EXPORT_C MJvmNativePortLayer* GetPortLayerL() |
|
136 { |
|
137 JELOG2(EJVM); |
|
138 return CJvmNativePortLayer::NewL(); |
|
139 } |
|
140 const TThreadPriority priorityMapping[] = |
|
141 { |
|
142 EPriorityMuchLess, //0 |
|
143 EPriorityMuchLess, //1 |
|
144 EPriorityMuchLess, //2 |
|
145 EPriorityMuchLess, //3 |
|
146 EPriorityMuchLess, //4 |
|
147 EPriorityLess, //5 |
|
148 EPriorityLess, //6 |
|
149 EPriorityLess, //7 |
|
150 EPriorityLess, //8 |
|
151 EPriorityNormal, //9 |
|
152 EPriorityNormal, //10 |
|
153 EPriorityMore, //11 |
|
154 }; |
|
155 EXPORT_C TThreadPriority GetSingleThreadPriority(const TInt& aJavaPriority) |
|
156 { |
|
157 JELOG2(EJVM); |
|
158 TInt index = Max(Min(aJavaPriority,11),0); |
|
159 return priorityMapping[index]; |
|
160 } |
|
161 |