pimprotocols/pbap/server/pbapauthpasswordgetter.cpp
author hgs
Mon, 23 Aug 2010 16:06:28 +0300
changeset 61 d30183af6ca6
parent 0 e686773b3f54
permissions -rw-r--r--
201033

// Copyright (c) 2006-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:
//

#include "pbapauthpasswordgetter.h"
#include "pbapserver.h"
#include "btaccesshostlog.h"


/*static*/ CPbapAuthPasswordGetter* CPbapAuthPasswordGetter::NewL(CPbapServer& aParent)
	{
	LOG_STATIC_FUNC
	CPbapAuthPasswordGetter* self = new (ELeave) CPbapAuthPasswordGetter(aParent);
	CleanupStack::PushL(self);
	self->ConstructL();
	CleanupStack::Pop(self);
	return self;
	}

CPbapAuthPasswordGetter::CPbapAuthPasswordGetter(CPbapServer& aParent)
: CActive(CActive::EPriorityUserInput), iParent(aParent)
	{
	LOG_FUNC
	CActiveScheduler::Add(this);
	}

CPbapAuthPasswordGetter::~CPbapAuthPasswordGetter()
	{
	LOG_FUNC
	Cancel();
	iNotifier.Close();
	}

void CPbapAuthPasswordGetter::ConstructL()
	{
	LOG_FUNC
	User::LeaveIfError(iNotifier.Connect());
	}

void CPbapAuthPasswordGetter::GetPassword(const TDesC& aRealm, const TBTDevAddr& aAddress)
	{
	LOG_FUNC
	
	// create parameter package
	TPbapAuthNotifierParamsPckg paramsPckg;
	paramsPckg().SetRealm(aRealm);
	paramsPckg().SetRemoteAddr(aAddress);
	
	// clear password buffer
	iResultsPckg().ResetPassword();

	// launch password notifier
	iNotifier.StartNotifierAndGetResponse(iStatus, KPbapAuthNotifierUid, paramsPckg, iResultsPckg);
	SetActive();
	}

void CPbapAuthPasswordGetter::RunL()
	{
	LOG_FUNC
	iNotifier.CancelNotifier(KPbapAuthNotifierUid);
	if (iResultsPckg().IsValidPassword())
		{
		iParent.HandlePasswordRetrieved(iStatus.Int(), iResultsPckg().Password());
		}
	else
		{
		iParent.HandlePasswordRetrieved(iStatus.Int(), KNullDesC);
		}
	}

void CPbapAuthPasswordGetter::DoCancel()
	{
	LOG_FUNC
	iNotifier.CancelNotifier(KPbapAuthNotifierUid);
	
	// inform parent that password will not be retrieved
	iParent.HandlePasswordRetrieved(KErrCancel, KNullDesC);
	}