--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locationrequestmgmt/networkrequesthandler/src/lbsnetworkrequesthandler.cpp Fri Jun 04 10:34:15 2010 +0100
@@ -0,0 +1,125 @@
+// 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:
+//
+
+/**
+ @file
+*/
+
+#include <e32base.h>
+#ifdef SYMBIAN_FEATURE_MANAGER
+ #include <featdiscovery.h>
+ #include <featureuids.h>
+#endif
+// LBS-specific
+#include <lbs.h>
+#include <lbs/lbsprivacycontroller.h>
+#include <lbs/lbsx3p.h>
+
+
+#include "lbsdevloggermacros.h"
+#include "lbsrootapi.h"
+#include "privacyandlocationrequesthandler.h"
+#include "x3phandler.h"
+#include "ngmessageswitch.h"
+#include "lbsnetworkrequesthandler.h"
+#include "lbsnrhserver.h"
+#include "agpsinterfacehandler.h"
+
+CLbsNetworkRequestHandler::CLbsNetworkRequestHandler(CNrhServer* aNrhServer)
+: iNrhServer(aNrhServer)
+ {
+ }
+CLbsNetworkRequestHandler::~CLbsNetworkRequestHandler()
+ {
+#if defined(_DEBUG)
+ if(iOomListener)
+ {
+ iOomListener->Cancel();
+ delete iOomListener;
+ }
+#endif
+
+ iNrhServer->SetPrivacyServerObserver(NULL);
+
+ delete iX3pHandler;
+ delete iPrivLocHandler;
+ delete iNgMessageSwitch;
+ iNetRegStatus.Close();
+ delete iAdmin;
+ }
+
+CLbsNetworkRequestHandler* CLbsNetworkRequestHandler::NewL(CNrhServer* aNrhServer)
+ {
+ CLbsNetworkRequestHandler* self = new(ELeave) CLbsNetworkRequestHandler(aNrhServer);
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop();
+ return(self);
+ }
+
+void CLbsNetworkRequestHandler::ConstructL()
+ {
+ LBSLOG_BEGIN();
+ // Create the LbsAdmin.
+ // It would be possible to do this every time a value
+ // is needed, but that would give the potential for OOM
+ // conditions, so do it once and pass the pointer to the
+ // sub-components that need it.
+
+ iAdmin = CLbsAdmin::NewL();
+
+ // Connect to the internal network registration (roaming) status interface
+ iNetRegStatus.OpenL();
+
+ // Create the Network Gateway Message Switch
+ iNgMessageSwitch = CNGMessageSwitch::NewL(*iAdmin);
+
+ //Create the Privacy and Location Handler
+ iPrivLocHandler = CPrivacyAndLocationHandler::NewL(*iNgMessageSwitch,
+ *iAdmin,
+ iNetRegStatus);
+
+ iNrhServer->SetPrivacyServerObserver(iPrivLocHandler->PrivacyHandler());
+
+#ifdef SYMBIAN_FEATURE_MANAGER
+ TBool locationManagementSupported = CFeatureDiscovery::IsFeatureSupportedL(NFeature::KLocationManagement);
+#else
+ TBool locationManagementSupported(ETrue);
+#endif
+ if(locationManagementSupported)
+ {
+ iX3pHandler = CX3pHandler::NewL(*iNgMessageSwitch, iPrivLocHandler->X3pStatusHandler(), *iAdmin);
+ }
+
+ // Let the server know about the X3P Handler
+ iNrhServer->SetX3pServerObserver(iX3pHandler);
+
+#if defined(_DEBUG)
+ // For OOM testing. The listener will force an error on the next heap
+ // allocation when it is kicked by test code.
+ iOomListener = CLbsOomListener::NewL();
+ iOomListener->StartGettingRequests();
+#endif
+ }
+
+CLbsAdmin* CLbsNetworkRequestHandler::Admin() const
+ {
+ return iAdmin;
+ }
+
+RLbsNetworkRegistrationStatus& CLbsNetworkRequestHandler::NetworkRegistrationStatus()
+ {
+ return iNetRegStatus;
+ }