--- a/dcmofw/dcmoserver/src/dcmoserver.cpp Wed Sep 15 13:08:27 2010 +0300
+++ b/dcmofw/dcmoserver/src/dcmoserver.cpp Wed Oct 13 15:30:06 2010 +0300
@@ -32,18 +32,9 @@
#include "dcmosession.h"
#include "dcmogenericcontrol.h"
#include "dcmodebug.h"
-#include "lawmodebug.h"
-#include "amsmlhelper.h"
-#include <lawmoadaptercrkeys.h>
-#include <DevManInternalCRKeys.h>
-#include <e32property.h>
-#include <PSVariables.h> // Property values
-#include <lawmointerface.h>
_LIT( KdcmoResourceFileName, "z:dcmo.rsc" );
const TInt KBufferSize = 256;
-const TInt KWipeSuccess = 1201;
-const TInt KWipeFailure = 1405;
TInt CDCMOServer::iSessionCount = 0;
// Standard server startup code
@@ -112,9 +103,6 @@
void CDCMOServer::ConstructL()
{
RDEBUG("CDCMOServer::ConstructL- begin");
- iwipeStatus = 0;
- iSessionIap = KErrNotFound;
- iCount = -1;
StartL(KDCMOServerName);
RDEBUG("CDCMOServer::ConstructL- end");
}
@@ -136,7 +124,7 @@
{
RDEBUG("CDCMOServer::~CDCMOServer- begin");
TInt count = idcmoArray.Count();
- RDEBUG_2("~~CDCMOServer::~CDCMOServer; %d", count );
+ RDEBUG_2("CDCMOServer::~CDCMOServer; %d", count );
if(count)
{
for(TInt i=0; i< count; i++)
@@ -145,25 +133,15 @@
delete iNotifier;
iNotifier = NULL;
}
-
- RLDEBUG("CDCMOServer::wipe done delete pluginuid()");
- TInt pluginObjectCount = ilawmoPlugins.Count();
- while(pluginObjectCount>0)
+ else
{
- RLDEBUG("plugin to be deleted");
- delete ilawmoPlugins[pluginObjectCount-1];
- RLDEBUG("plugin deleted");
- pluginObjectCount--;
+ //Kill the server
+ if( iSessionCount == 0)
+ CActiveScheduler::Stop();
}
- RLDEBUG("CDCMOServer::close all RArrays()");
- ilawmoPluginUidToBeWiped.Close();
- RLDEBUG("CDCMOServer::closeD all RArrays()");
- ilawmoPlugins.Close();
-
- RDEBUG("CDCMOServer::call FinalClose");
REComSession::FinalClose();
- RDEBUG("~~~CDCMOServer::~CDCMOServer- end");
+ RDEBUG("CDCMOServer::~CDCMOServer- end");
}
// -----------------------------------------------------------------------------
@@ -183,20 +161,12 @@
if( idcmoArray.Count() && ( iSessionCount == 0 ))
{
// A session is being destroyed
- RDEBUG("CDCMOServer::DropSession- dofinalise ?");
TRAPD( err, DoFinalizeL());
- iCount = 0;
if ( !err )
{
RDEBUG_2("CDCMOServer::DropSession err = %d", err );
}
}
- if((iSessionCount == 0)&&(iCount== -1))
- {
- RDEBUG("DropSession kill server, only when no session and no wipe pending");
- CActiveScheduler::Stop();
- RDEBUG("DropSession kill server");
- }
RDEBUG("CDCMOServer::DropSession- end");
}
@@ -237,28 +207,21 @@
// CDCMOServer::GetAdapterUidL
// Gets the plug-in adapter implementation uid if it present.
// ----------------------------------------------------------------------------------------
-TUid CDCMOServer::GetAdapterUidL(const TDesC& aCategory, TBool aIsLawmo)
+TUid CDCMOServer::GetAdapterUidL(const TDesC& aCategory)
{
RDEBUG("CDCMOServer::GetDCMOAdapterUidL(): begin");
- RLDEBUG("CDCMOServer::GetAdapterUidL(): begin");
+
TUid retUid = {0x0};
- TEComResolverParams resolverParams;
+
RImplInfoPtrArray infoArray;
// Note that a special cleanup function is required to reset and destroy
// all items in the array, and then close it.
TCleanupItem cleanup(CleanupEComArray, &infoArray);
CleanupStack::PushL(cleanup);
- if(aIsLawmo)
- {
- REComSession::ListImplementationsL(KLAWMOPluginInterfaceUid, resolverParams, KRomOnlyResolverUid, infoArray);
- RLDEBUG("CDCMOServer::GetAdapterUidL(): listImpl");
- }
- else
REComSession::ListImplementationsL(KDCMOInterfaceUid, infoArray);
// Loop through each info for each implementation
TBuf8<KBufferSize> buf;
- RLDEBUG("CDCMOServer::GetAdapterUidL(): for loop");
for (TInt i=0; i< infoArray.Count(); i++)
{
buf = infoArray[i]->OpaqueData();
@@ -267,13 +230,12 @@
if(category.Find(infoArray[i]->OpaqueData())!= KErrNotFound)
{
retUid = infoArray[i]->ImplementationUid();
- RLDEBUG("CDCMOServer::GetAdapterUidL(): matched");
break;
}
buf.Zero();
}
CleanupStack::PopAndDestroy(); //cleanup
- RLDEBUG("CDCMOServer::GetAdapterUidL():end");
+
RDEBUG("CDCMOServer::GetDCMOAdapterUidL(): end");
return retUid;
}
@@ -647,170 +609,6 @@
}
// ----------------------------------------------------------------------------------------
-// CDCMOServer::GetPluginUids
-// Gets the plug-in adapter implementation uid if it present.
-// ----------------------------------------------------------------------------------------
-void CDCMOServer::GetLawmoPluginUidsL()
-{
- RDEBUG("CDCMOServer::GetPluginUids(): begin");
- ilawmoPluginUidToBeWiped.Reset();
- RImplInfoPtrArray infoArray;
- TEComResolverParams resolverParams;
- // Note that a special cleanup function is required to reset and destroy
- // all items in the array, and then close it.
- TCleanupItem cleanup(CleanupEComArray, &infoArray);
- CleanupStack::PushL(cleanup);
- REComSession::ListImplementationsL(KLAWMOPluginInterfaceUid, resolverParams, KRomOnlyResolverUid, infoArray);
- RLDEBUG("CDCMOServer::GetPluginUids(): listImpl");
- // Loop through each info for each implementation
- for (TInt i=0; i< infoArray.Count(); i++)
- {
- ilawmoPluginUidToBeWiped.Append(infoArray[i]->ImplementationUid());
- RLDEBUG("CDCMOServer::GetPluginUids(): for loop");
- }
- CleanupStack::PopAndDestroy(); //cleanup
- RLDEBUG("CDCMOServer::GetPluginUids():end");
- return;
-}
-
-TLawMoStatus CDCMOServer::WipeAllItem()
- {
- //Update ilawmopluginUid, so that all Node items are wiped.
- //WipeItem doesn only on Uid's in the RArray.
- TRAPD(error,GetLawmoPluginUidsL());
- if(error == KErrNone)
- return WipeItem();
- else
- return ELawMoWipeNotPerformed;
- }
-
-TLawMoStatus CDCMOServer::WipeItem(TInt aValue)
- {
- RLDEBUG("CDCMOServer::WipeItem(): begin");
- TLawMoStatus lawmostat(ELawMoAccepted);
- iCount = 0;
- if(ilawmoPluginUidToBeWiped.Count() > 0)
- {
- RLDEBUG_2("CDCMOServer::WipeItem got uid(): %d",ilawmoPluginUidToBeWiped[iCount]);
- CLAWMOPluginInterface* obj;
- RLDEBUG("CDCMOServer::WipeItem(): NewL");
- TRAPD(err,obj = CLAWMOPluginInterface::NewL(ilawmoPluginUidToBeWiped[iCount], this));
- if(err == KErrNone)
- {
- RLDEBUG("CDCMOServer::WipeItem(): obj created");
- RLDEBUG_2("CDCMOServer::WipeItem plugin count: %d",ilawmoPlugins.Count());
- TRAP(err,obj->WipeL());
- RLDEBUG_2("CDCMOServer::WipeItem(): wipe called %d",err);
- ilawmoPlugins.Append(obj);
- // Get the IAP being used in the current session
- TRAP( err, SmlHelper::GetDefaultIAPFromDMProfileL( iSessionIap ) );
- RLDEBUG_2("CDCMOServer::HandleWipeCompleted(): get iap %d",iSessionIap);
- }
- if(err!=KErrNone)
- HandleWipeCompleted(KErrGeneral);
- }
- else
- {
- lawmostat = ELawMoWipeNotPerformed;
- }
-
- RLDEBUG("CDCMOServer::WipeItem(): End");
- return lawmostat;
- }
-
-TLawMoStatus CDCMOServer::GetListItemL(TDesC& item, TDes& strValue)
-{
- RLDEBUG("CDCMOServer::GetListItem(): begin");
- TEComResolverParams resolverParams;
- TLawMoStatus lawmostat(ELawMoSuccess);
- TBuf<KBufferSize> itemName;
- RImplInfoPtrArray infoArray;
- TCleanupItem cleanup(CleanupEComArray, &infoArray);
- CleanupStack::PushL(cleanup);
- REComSession::ListImplementationsL(KLAWMOPluginInterfaceUid, resolverParams, KRomOnlyResolverUid, infoArray);
- RLDEBUG("CDCMOServer::GetListItem(): listImpl");
-
- for (TInt i=0; i< infoArray.Count(); i++)
- {
- RLDEBUG("CDCMOServer::GetListItem(): for loop");
- TBuf<KBufferSize> temp;
- temp.Copy(infoArray[i]->OpaqueData());
- RLDEBUG_2("CDCMOServer::GetListItem opaque data to compare is %s", temp.PtrZ());
- if(item == temp)
- {
- itemName.Copy(infoArray[i]->DisplayName());
- RLDEBUG("CDCMOServer::GetListItem(): matched");
- break;
- }
- }
- CleanupStack::PopAndDestroy(); //cleanup
- RLDEBUG_2("CDCMOServer::GetListItem display name is %s", itemName.PtrZ());
- strValue.Zero();
- strValue.Append(itemName);
- RLDEBUG("CDCMOServer::GetListItem(): End");
- return lawmostat;
-}
-
-
-TLawMoStatus CDCMOServer::GetToBeWipedL(TDesC& item, TDes& wipeValue)
-{
- RLDEBUG("CDCMOServer::GetToBeWiped(): begin");
- TLawMoStatus lawmostat(ELawMoSuccess);
- TInt wipeVal(0);
- TUid impluid = GetAdapterUidL(item, ETrue);
- RLDEBUG_2("CDCMOServer::GetToBeWiped for uid(): %d", impluid);
- TInt afind = ilawmoPluginUidToBeWiped.Find(impluid);
- if(afind!=KErrNotFound)
- {
- wipeVal = 1;
- RLDEBUG("CDCMOServer::GetToBeWiped(): uid in Rarray");
- }
- wipeValue.Zero();
- wipeValue.Num(wipeVal);
- RLDEBUG("CDCMOServer::GetToBeWiped(): End");
- return lawmostat;
-}
-
-TLawMoStatus CDCMOServer::SetToBeWipedL(TDesC& item, TInt wipeValue)
-{
- RLDEBUG("CDCMOServer::SetToBeWiped(): begin");
- TLawMoStatus lawmostat(ELawMoSuccess);
- TUid impluid = GetAdapterUidL(item, ETrue);
- RLDEBUG_2("CDCMOServer::SetToBeWiped for uid(): %d", impluid);
- TInt afind = ilawmoPluginUidToBeWiped.Find(impluid);
- // Add Node's corresponding plugin uid to list so that it can be wiped
- if(impluid.iUid)
- {
- if(wipeValue)
- {
- RLDEBUG("CDCMOServer::SetToBeWiped(): wipeVal true");
- if(afind==KErrNotFound)
- ilawmoPluginUidToBeWiped.Append(impluid);
- else
- RLDEBUG("CDCMOServer::SetToBeWiped() tobewiped already set");
- }
- else
- {
- RLDEBUG("CDCMOServer::SetToBeWiped(): wipeVal false");
- if(afind!=KErrNotFound)
- {
- ilawmoPluginUidToBeWiped.Remove(afind);
- RLDEBUG("CDCMOServer::SetToBeWiped() tobewiped unset");
- }
- else
- RLDEBUG("CDCMOServer::SetToBeWiped() tobewiped notset atall");
- }
- }
- else
- {
- RLDEBUG("CDCMOServer::SetToBeWiped(): no such plugin found");
- lawmostat = ELawMoFail;
- }
- RLDEBUG("CDCMOServer::SetToBeWiped(): End");
- return lawmostat;
-}
-
-// ----------------------------------------------------------------------------------------
// CDCMOServer::SetStarter
// Sets the iStarter value
// ----------------------------------------------------------------------------------------
@@ -820,138 +618,3 @@
iStarter = aValue;
RDEBUG("CDCMOServer::SetStarter(): end");
}
-
-void CDCMOServer::HandleWipeCompleted(TInt status)
-{
- RLDEBUG("CDCMOServer::HandleWipeCompleted(): begin");
- // whether wipe is performed or failed
- iwipeStatus = (iwipeStatus && status);
- RLDEBUG_2("CDCMOServer::HandleWipeCompleted wipestate: %d",iwipeStatus);
- iCount++;
- if(ilawmoPluginUidToBeWiped.Count()>iCount)
- {
- RLDEBUG("CDCMOServer::HandleWipeCompleted(): create obj");
- CLAWMOPluginInterface* obj;
- TRAPD(err, obj = CLAWMOPluginInterface::NewL(ilawmoPluginUidToBeWiped[iCount], this));
- if(err == KErrNone)
- {
- RLDEBUG("CDCMOServer::HandleWipeCompleted(): obj created");
- RLDEBUG_2("CDCMOServer::HandleWipeCompleted plugin count: %d",ilawmoPlugins.Count());
- TRAP(err,obj->WipeL());
- RLDEBUG_2("CDCMOServer::HandleWipeCompleted(): wipe called %d",err);
- ilawmoPlugins.Append(obj);
- }
- if(err!=KErrNone)
- HandleWipeCompleted(KErrGeneral);
- }
- else
- {
- // start DM session using the Monitor for generic alert
- RLDEBUG("CDCMOServer::HandleWipeCompleted(): done");
- TInt err;
- TBuf<KBufferSize> srvrid;
- CRepository* crep;
- TRAP(err, crep = CRepository::NewLC( KCRUidDeviceManagementInternalKeys );
- CleanupStack::Pop(crep));
- RLDEBUG("CDCMOServer::HandleWipeCompleted(): get srvrid");
- if(err == KErrNone)
- err = crep->Get( KLAWMOfactoryDmServerID, srvrid );
- RDEBUG_2("CDCMOServer::GetCurrentServerId() %d",err);
- RLDEBUG_2("CDCMOServer::HandleWipeCompleted(): srvrid %s",srvrid.PtrZ());
- if (err == KErrNone)
- {
- RLDEBUG("CDCMOServer::startNwMonitor()");
- TRAP(err,StartDMNetworkMonitorL(srvrid, iSessionIap));
- }
-
- if(crep)
- {
- delete crep; //crep
- crep = NULL;
- }
-
- // Only when session is started successfully, Set wipestatus
- if(err==KErrNone)
- {
- RLDEBUG("CDCMOServer::HandleWipeCompleted(): writing wipestatus to cenrep");
- CRepository* repository;
- TRAP(err, repository = CRepository::NewLC ( KCRUidLawmoAdapter );
- CleanupStack::Pop(crep));
-
- if(iwipeStatus==KErrNone)
- iwipeStatus = KWipeSuccess;
- else
- iwipeStatus = KWipeFailure;
-
- repository->Set(KLawmoWipeStatus,iwipeStatus);
- RLDEBUG_2("CDCMOServer::HandleWipeCompleted wipestate: %d",iwipeStatus);
- if (repository)
- {
- delete repository;
- repository = NULL;
- }
- }
-
- RLDEBUG_2("printing ilawmoPluginUidToBeWiped %d", ilawmoPluginUidToBeWiped.Count());
- RLDEBUG_2("printing ilawmoPlugins %d", ilawmoPlugins.Count());
- RLDEBUG_2("printing ilawmoPlugins %d", iCount);
- iCount = -1; // To indicate all wipe is done
- if( iSessionCount == 0)
- {
- CActiveScheduler::Stop();
- RLDEBUG("CDCMOServer::HandleWipeCompleted(): kill server");
- }
- }
-
- RLDEBUG("CDCMOServer::HandleWipeCompleted(): end");
-}
-
-// ------------------------------------------------------------------------------------------------
-// CDCMOServer::StartDMNetworkMonitorL()
-// ------------------------------------------------------------------------------------------------
-void CDCMOServer::StartDMNetworkMonitorL(TDesC& aServerId, TInt iapid)
-{
- TInt retryenabled = 1;
- _LIT( KNetMon,"\\dmnetworkmon.exe" );
- RLDEBUG("CDCMOServer::StartDMNetworkMonitorL(): start");
- TBuf8<KBufferSize> serverid;
- serverid.Copy(aServerId);
- // Enable DM Network Monitoring for retry of Generic alert in case of N/W loss
-
- CRepository *repository= CRepository::NewLC ( KCRUidDeviceManagementInternalKeys );
- repository->Set(KDevManEnableDMNetworkMon, retryenabled);
- repository->Set(KDevManServerIdKey, serverid);
- repository->Set(KDevManIapIdKey, iapid);
- RLDEBUG("CDCMOServer::StartDMNetworkMonitorL(): set rep keys");
- CleanupStack::PopAndDestroy();
-
- // create NetMon EXE
- RProcess rp;
- TInt err = rp.Create(KNetMon,KNullDesC);
- RLDEBUG("CDCMOServer::StartDMNetworkMonitorL():create rprocess");
- User::LeaveIfError(err);
- TRequestStatus stat;
- rp.Rendezvous(stat);
- RLDEBUG("CDCMOServer::StartDMNetworkMonitorL():rendezvous");
-
- if (stat!=KRequestPending)
- {
- RLDEBUG("CDCMOServer::StartDMNetworkMonitorL():abort srvr");
- rp.Kill(0); // abort startup
- }
- else
- {
- RLDEBUG("CDCMOServer::StartDMNetworkMonitorL(): start server");
- rp.Resume(); // logon OK - start the server
- }
- User::WaitForRequest(stat); // wait for start or death
- TInt r= rp.ExitType();
- TInt reqstat = stat.Int();
- //TExitType a;
- RLDEBUG_2("CDCMOServer::StartDMNetworkMonitorL() exittype %d",r);
- RLDEBUG_2("CDCMOServer::StartDMNetworkMonitorL() reqstatus %d",reqstat);
-
- rp.Close();
-}
-
-