datasourcemodules/networkpositioningmodule/src/cnetenvironment.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 14 May 2010 17:16:36 +0300
changeset 27 aadfb18aaac1
parent 0 9cfd9a3ee49c
permissions -rw-r--r--
Revision: 201019 Kit: 201019

// Copyright (c) 2008-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
 @InternalComponent
*/

#include "cnetenvironment.h"
#include "cpositionerq.h"
#include "cnetrequesthandler.h"
#include "cnetresponsehandler.h"
#include "cnetmodstatushandler.h"
#include "psylogging.h"
#include "netpsy.hrh"

/**
 * Destructor
 */
CNETEnvironment::~CNETEnvironment()
	{
    Dll::SetTls(NULL);
    
    delete iPositionerQ;
    delete iRequestHandler;
    delete iResponseHandler;
	delete iModStatusHandler;
	}

/**
 * Constructor
 */
CNETEnvironment::CNETEnvironment()
	{
	}

/**
Close the environment
*/
void CNETEnvironment::CloseInstance()
	{
	CObject::Close();
	}

/**
 * CNETEnvironment::RegisterPSYL
 * 
 * @param aPSY, the MPOsitioner instance to add to the queue.
 */
void CNETEnvironment::RegisterPSYL(MPositioner* aPSY)
	{
	if(iPositionerQ)
		{
		iPositionerQ->RegisterPSYL(aPSY);
		}
	}

/**
 * CNETEnvironment::UnregisterPSYL
 * 
 * @param aPSY, the MPositioner instance to remove from the queue.
 */
void CNETEnvironment::UnregisterPSY(MPositioner* aPSY)
	{
	if(iPositionerQ)
		{
		iPositionerQ->UnregisterPSY(aPSY);
		}
	}


/**
 * CPositionerQ::NewL Two-phased constructor.
 * Creates a new instance of a CNETEnvironment implementation.
 * 
 * @return the CPositionerEnvironment implementation.
 */
CPositionerEnvironment* CNETEnvironment::NewL()
    {
	// Have we loaded the environment already
    if ( !Dll::Tls() ) 
        {
        CNETEnvironment* self = new( ELeave ) CNETEnvironment();
        
        CleanupClosePushL(*self);
        self->ConstructL();
        CleanupStack::Pop();

        Dll::SetTls(self);
		}
	else
		{
		CPositionerEnvironment * theEnv = reinterpret_cast<CPositionerEnvironment*>(Dll::Tls());
		theEnv->Open();
		}
 
    return reinterpret_cast<CPositionerEnvironment*>(Dll::Tls());
    }

void CNETEnvironment::ConstructL()
    {
    TRACESTRING("CNETEnvironment::ConstructL start");
    
    
	// Do not change order of construction!
    CPositionerEnvironment::ConstructL();
	iPositionerQ = CPositionerQ::NewL();
	iRequestHandler = CNETRequestHandler::NewL(iPositionerQ);
	iResponseHandler = CNETResponseHandler::NewL(iPositionerQ, iRequestHandler);
	iModStatusHandler = CNETModStatusHandler::NewL(iPositionerQ);	

    TRACESTRING("CNETEnvironment::ConstructL end");
    }

/**
 * Returns the CNETRequestHandler instance
 *
 * @return the CNETRequestHandler
 */
CRequestHandler* CNETEnvironment::GetRequestHandler()
	{
    return iRequestHandler;
	}
	
/**
 * Returns the CNETResponseHandler instance.
 *
 * @return the CNETResponseHandler
 */
CResponseHandler* CNETEnvironment::GetResponseHandler()
	{
    return iResponseHandler;
	}

void CNETEnvironment::GetEnvCriteria(TPositionCriteria& aCriteria)
	{
	aCriteria = iCriteria;
	}


TPositionCriteria& CNETEnvironment::GetEnvCriteria()
	{
	return iCriteria;
	}