networkcontrol/commsuserpromptmgr/utils/src/netupstls.cpp
changeset 0 af10295192d8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/commsuserpromptmgr/utils/src/netupstls.cpp	Tue Jan 26 15:23:49 2010 +0200
@@ -0,0 +1,236 @@
+// Copyright (c) 2007-2009 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:
+// This file provides the implementation of the methods for NetUps Tls
+// @internalAll
+// @prototype
+// 
+//
+
+#include <e32svr.h> // Included here, since removal of Platform headers from public headers[f32file.h] for TB92SDK 
+#include "netupstls.h"
+
+#include <e32def.h>		  			// defines TInt
+
+#ifdef __WINS__
+#include <u32hal.h>
+#endif
+
+#include "e32std.h"					// defines TLS, User
+#include "es_ini.h"					// defines CESockIniData.
+
+#include "netupsimpl.h" // is this needed here, should relevant definitions be ported
+
+#include "netupsconst.h"
+#include "netupsassert.h"
+
+namespace NetUps
+{
+__FLOG_STMT(_LIT8(KNetUpsSubsys, 	"esock");)   
+__FLOG_STMT(_LIT8(KNetUpsComponent, "NetUps");) /*esockloader*/
+
+class CNetUpsImpl;
+	
+CNetUpsTls* CNetUpsTls::NewL(TInt32 aServiceId)
+	{
+	CNetUpsTls* self = new (ELeave) CNetUpsTls();
+
+	CleanupStack::PushL(self);
+	self->ConstructL(aServiceId);
+	CleanupStack::Pop(self);
+
+	return self;		
+	}
+
+void CNetUpsTls::ConstructL(TInt32 aServiceId)
+	{
+	(void) aServiceId;
+
+#ifdef __WINS__
+
+	// for the emulator allow the constant to be patched via epoc.ini
+	TUint32 value;
+
+	TInt ret = UserSvr::HalFunction(EHalGroupEmulator, EEmulatorHalIntProperty, (TAny*)"NETWORKING_UPS_DISABLE", &value);
+
+	if (ret == KErrNone)
+		{
+		if ((value == ENetUpsEnabled) || (value == ENetUpsDisabled))
+			// i.e. Net Ups Enabled.
+			{
+			iUpsIpActive = static_cast<TNetUpsEnableConst>(value);
+			if (iUpsIpActive==ENetUpsDisabled)
+				{
+				User::Leave(KErrNotSupported);
+				}
+			}	
+		else if (value == EReadStatusFromFile)
+			{
+			ReadConfigurableSettingsL(EEnabledStatus);
+			}
+		else 
+			{
+			User::Leave(KErrCorrupt);
+			}
+		}
+	else
+		{
+		iUpsIpActive = ENetUpsEnabled;
+		}
+				
+	ret = UserSvr::HalFunction(EHalGroupEmulator, EEmulatorHalIntProperty, (TAny*) "NETWORKING_UPS_SESSION", &value);
+
+	if (ret == KErrNone)
+		{
+		if ((value == EProcessLifeTime) || (value == ENetworkLifeTime))
+			{
+			iUpsSessionType = static_cast<TNetUpsSessionConst>(value);
+			}
+		else if (value == EReadStatusFromFile)
+			{
+			ReadConfigurableSettingsL(ESessionMode);
+			}
+		else
+			{
+			User::Leave(KErrCorrupt);					
+			}
+		}
+	else 
+		{
+		iUpsSessionType = EProcessLifeTime;
+		}				
+
+#else // NOT WINSCW
+
+	iUpsIpActive = static_cast<TNetUpsEnableConst>(KUpsIpDisabled);
+	iUpsSessionType = static_cast<TNetUpsSessionConst>(KUpsSessionType); // validate input ?
+	if (iUpsIpActive == EReadStatusFromFile)
+		{
+#ifdef 	_DEBUG
+		ReadConfigurableSettingsL(EEnabledStatus);
+#else   // _DEBUG
+		User::Leave(KErrNotSupported);	
+#endif  // _DEBUG
+		}
+	else if (iUpsIpActive != ENetUpsEnabled)
+		{
+		User::Leave(KErrNotSupported);				
+		}
+
+	if (iUpsSessionType == EReadSessionDefFromFile)
+		{
+#ifdef 	_DEBUG
+		ReadConfigurableSettingsL(ESessionMode);
+#endif  // _DEBUG
+		}
+
+#endif // __WINS__
+
+	iNetUpsImpl = CNetUpsImpl::NewL();
+
+	if (iUpsSessionType ==  EProcessLifeTime)
+		{
+		iNetUpsImpl->SetLifeTimeMode(CNetUpsImpl::EProcessLifeTimeMode);	
+		}
+	else
+		{
+		iNetUpsImpl->SetLifeTimeMode(CNetUpsImpl::ENetworkLifeTimeMode);		
+		}
+
+	__FLOG_OPEN(KNetUpsSubsys, KNetUpsComponent);
+	__FLOG_3(_L("CNetUpsTls %08x:\tConstructL(), aServiceId = %d, iLifeTimeMode = %d"), this, aServiceId, iUpsSessionType);		
+	}
+
+void CNetUpsTls::ReadConfigurableSettingsL(TConfigurableSetting aConfigurableSetting)
+	{
+	__FLOG_1(_L("CNetUpsTls %08x:\tReadConfigurableSettingsL()"), this);	
+
+	CESockIniData* ini = NULL;
+	ini=CESockIniData::NewL(_L("netups.ini"));
+	CleanupStack::PushL(ini);
+	TInt value(0);
+
+	switch(aConfigurableSetting)
+		{
+		case EEnabledStatus:
+			if(ini->FindVar(_L("upsIpMode"),_L("NETWORKING_UPS_DISABLE"), value))
+				{
+				if (value==ENetUpsEnabled)
+					{
+					iUpsIpActive = static_cast<TNetUpsEnableConst>(value);
+					__FLOG_2(_L("CNetUpsTls %08x:\tReadConfigurableSettingsL(), iUpsIpActive = %d"), this, iUpsIpActive);	
+					}
+				else if (value==ENetUpsDisabled)
+					{
+					User::Leave(KErrNotSupported);
+					}
+				else
+					{
+					User::Leave(KErrCorrupt);
+					}
+				}
+			break;
+		case ESessionMode:
+			if(ini->FindVar(_L("upsIpMode"),_L("NETWORKING_UPS_SESSION"), value))
+				{
+				if ((value >=  EProcessLifeTime) && (value <= ENetworkLifeTime))
+					{
+					iUpsSessionType = static_cast<TNetUpsSessionConst>(value);
+					__FLOG_2(_L("CNetUpsTls %08x:\tReadConfigurableSettingsL(), iUpsSessionType = %d"), this, iUpsSessionType);	
+					}
+				else
+					{
+					User::Leave(KErrCorrupt);
+					}
+				}
+			break;
+		default:
+			User::Panic(KNetUpsPanic, KPanicInvalidLogic);
+			break;
+		}
+
+	CleanupStack::PopAndDestroy(ini);	
+	}
+
+CNetUpsTls::CNetUpsTls()
+  : iUpsIpActive(ENetUpsEnabled), iUpsSessionType(EProcessLifeTime)
+	{
+	}
+	
+CNetUpsTls::~CNetUpsTls()
+	{
+	__FLOG_1(_L("CNetUpsTls %08x:\t~CNetUpsTls"), this);	
+	delete iNetUpsImpl;
+	__FLOG_CLOSE;			
+	}
+
+CNetUpsImpl* CNetUpsTls::GetNetUpsImpl()
+	{
+	__FLOG_2(_L("CNetUpsTls %08x:\tGetNetUpsImpl(), iNetUpsImpl = %08x"), this, iNetUpsImpl);	
+	return iNetUpsImpl;
+	}		
+		
+TUint32 CNetUpsTls::GetUpsIpDisabled()
+	{
+	__FLOG_2(_L("CNetUpsTls %08x:\tGetUpsIpDisabled(), iUpsIpActive = %d"), this, iUpsIpActive);	
+	return iUpsIpActive;
+	}
+
+TUint32 CNetUpsTls::GetUpsSessionType()  	
+	{
+	__FLOG_2(_L("CNetUpsTls %08x:\tGetUpsSessionType(), iUpsSessionType = %d"), this, iUpsSessionType);	
+	return iUpsSessionType;
+	}
+
+}  // end of namespace
+