sysresmonitoring/oommonitor/src/oommonitorsession.cpp
changeset 35 13fd6fd25fe7
parent 0 2e3d3ce01487
--- a/sysresmonitoring/oommonitor/src/oommonitorsession.cpp	Fri May 14 16:01:13 2010 +0300
+++ b/sysresmonitoring/oommonitor/src/oommonitorsession.cpp	Thu May 27 13:01:09 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
+* Copyright (c) 2006-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"
@@ -16,33 +16,104 @@
 */
 
 
-#include "oommonitorsession.h"
+#include <coemain.h>
+#include <oommonitorsession.h>
 #include "oommonitorclientserver.h"
+#include "oompanic.h"
+#include "OomTraces.h"
 
 EXPORT_C TInt ROomMonitorSession::Connect()
-	{
-	return CreateSession(KMemoryMonitorServerName, TVersion(0,0,0));
-	}
+    {
+    FUNC_LOG;
+
+    return CreateSession(KMemoryMonitorServerName, TVersion(0,0,0));
+    }
 
 EXPORT_C TInt ROomMonitorSession::RequestFreeMemory(TInt aBytesRequested)
-	{
-	TIpcArgs p(aBytesRequested);
-	return SendReceive(EOomMonitorRequestFreeMemory, p);
-	}
+    {
+    FUNC_LOG;
+
+    TIpcArgs p(aBytesRequested);
+    return SendReceive(EOomMonitorRequestFreeMemory, p);
+    }
+
+EXPORT_C TInt ROomMonitorSession::RequestOptionalRam(TInt aBytesRequested, TInt aMinimumBytesNeeded, TInt aPluginId, TInt& aBytesAvailable)
+    {
+    FUNC_LOG;
+
+    TIpcArgs p(aBytesRequested, aMinimumBytesNeeded, aPluginId, aBytesAvailable);
+    TInt ret = SendReceive(EOomMonitorRequestOptionalRam, p);
+    if (ret >= 0)
+        {
+        aBytesAvailable = ret;
+        ret = KErrNone;
+        }
+    
+    return ret;
+    }
+
+
+
+EXPORT_C void ROomMonitorSession::RequestOptionalRam(TInt aBytesRequested, TInt aMinimumBytesNeeded, TInt aPluginId, TRequestStatus& aStatus)
+    {
+    FUNC_LOG;
+
+    TIpcArgs p(aBytesRequested, aMinimumBytesNeeded, aPluginId);
+    SendReceive(EOomMonitorRequestOptionalRam, p, aStatus);
+    }
 
 EXPORT_C void ROomMonitorSession::RequestFreeMemory(TInt aBytesRequested, TRequestStatus& aStatus)
-	{
-	TIpcArgs p(aBytesRequested);
-	SendReceive(EOomMonitorRequestFreeMemory, p, aStatus);
-	}
+    {
+    FUNC_LOG;
+
+    TIpcArgs p(aBytesRequested);
+    SendReceive(EOomMonitorRequestFreeMemory, p, aStatus);
+    }
 
 EXPORT_C void ROomMonitorSession::CancelRequestFreeMemory()
-	{
-	SendReceive(EOomMonitorCancelRequestFreeMemory, TIpcArgs());
-	}
+    {
+    FUNC_LOG;
+
+    SendReceive(EOomMonitorCancelRequestFreeMemory, TIpcArgs());
+    }
 
 EXPORT_C void ROomMonitorSession::ThisAppIsNotExiting(TInt aWgId)
-	{
-	TIpcArgs p(aWgId);
-	SendReceive(EOomMonitorThisAppIsNotExiting, p);
-	}
+    {
+    FUNC_LOG;
+
+    TIpcArgs p(aWgId);
+    SendReceive(EOomMonitorThisAppIsNotExiting, p);
+    }
+
+
+EXPORT_C void ROomMonitorSession::SetOomPriority(TOomPriority aPriority)
+    {
+    FUNC_LOG;
+
+    CCoeEnv* coeEnv = CCoeEnv::Static();
+
+    __ASSERT_DEBUG(coeEnv, OomMonitorPanic(KNoCoeEnvFound));    
+
+    if (coeEnv)
+        {
+        TInt wgId = coeEnv->RootWin().Identifier();
+        TIpcArgs p(wgId);
+        switch (aPriority)
+            {
+            case EOomPriorityNormal:
+                SendReceive(EOomMonitorSetPriorityNormal, p);
+                break;
+            case EOomPriorityHigh:
+                SendReceive(EOomMonitorSetPriorityHigh, p);
+                break;
+            case EOomPriorityBusy:
+                SendReceive(EOomMonitorSetPriorityBusy, p);
+                break;
+            default:
+                OomMonitorPanic(KOomInvalidPriority);
+                break;
+            }
+        }
+    }
+
+