⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smbmusicapfilemgrrscmgr.cpp

📁 索爱手机代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
/* Copyright (C) 2007 Sony Ericsson Mobile Communications Japan, Inc. */
/*-------------------------------------------------------------------------*/
// FileName:
//	CSmbMusicAPFileMgrRscMgr.cpp
//
// Description:
//	儈儏乕僕僢僋僼傽僀儖娗棟儕僜乕僗儅僱乕僕儍僋儔僗
/*-------------------------------------------------------------------------*/
//曄峏棜楌
//擔晅				|曄峏幰			|撪梕
//------------------+---------------+----------------------------------------
//2007/03/08		|SEMC崃绮		|怴婯嶌惉
//2007/03/19		|SEMC崃绮		|儕僜乕僗庢摼忬懺傪捛壛/慡儕僜乕僗僉儍儞僙儖
//2007/04/04		|SEMC崃绮		|儊儌儕儌乕僪儕僜乕僗庢摼幚憰
//------------------+---------------+----------------------------------------

#include "SmbMusicAPFileMgrRscMgr.h"
#include "SmbMusicAPFileMgrDebugLog.h"

#ifndef __SMBMUSICAPFILEMGREXTERNALINTERFACE_H__
#include "SmbMusicAPFileMgrExternalInterface.h"
#endif

USING_NAMESPACE_DCM
USING_NAMESPACE_SEMCJ
///////////////////////////////////////////////////////////////////////////////

/**
 僼傽僋僩儕娭悢
 * @param	側偟
 * @return	惗惉偟偨僋儔僗偺億僀儞僞
 */
CSmbMusicAPFileMgrRscMgr* CSmbMusicAPFileMgrRscMgr::NewL(MObserver& aObserver)
	{
	CSmbMusicAPFileMgrRscMgr* self = new(ELeave) CSmbMusicAPFileMgrRscMgr(aObserver);
	CleanupStack::PushL(self);
	self->ConstructL();
	CleanupStack::Pop(self);
	return self;
	}
	
/**
 * 僐儞僗僩儔僋僞
 */
CSmbMusicAPFileMgrRscMgr::CSmbMusicAPFileMgrRscMgr(MObserver& aObserver)
: iRscMgrRscClient(NULL), iRscResultList(NULL), iObserver(aObserver), iRscStateArray(NULL), iCategory(KErrNotFound)
	{
	// 摿偵壗傕張棟偟側偄
	}

/**
 * 2僼僃乕僘僐儞僗僩儔僋僞
 */
void CSmbMusicAPFileMgrRscMgr::ConstructL()
	{
	// 儕僜乕僗嫞崌FW惗惉
	iRscMgrRscClient = CSmbRscMgrRscClient::NewL(this, this, KSmbMusicAPFileMgrUid);
	
	//忬懺娗棟傾儗僀惗惉
	iRscStateArray = new (ELeave) CArrayFixFlat<TSmbMusicAPFileMgrRscMgrState>(ECategoryMax);
	
	//弶婜壔
	for(TInt i = 0; i < ECategoryMax; i++)
		{
		iRscStateArray->AppendL(ERscMgrRscNone);
		}
	}

/**
 * 僨僗僩儔僋僞
 */
CSmbMusicAPFileMgrRscMgr::~CSmbMusicAPFileMgrRscMgr()
	{
	delete iRscMgrRscClient;
	delete iRscResultList;
	delete iRscStateArray;
	}

/**
 * 儕僜乕僗梫媮
 */
TInt CSmbMusicAPFileMgrRscMgr::RequestAllocResourceL(TSmbMusicAPFileMgrRscMgrCategory aCategory)
	{
	OUTPUT_FUNC;
	
	//梫媮儕僜乕僗ID僙僢僩
	TSmbRscMgrRscPriority rscPriority;
	switch(aCategory)
		{
	case ESmbMusicAPFileMgrRscMgrSDBindRscCategory:	//SDBind儕僜乕僗梫媮
		rscPriority.iRscId    = ESmbRscMgrRscSdKeyBind;				// SD(Bind)
		rscPriority.iPriority = KSmbRscMgrRscPriorityValueLow;
		iCategory = ESDBindRscCategory;
		break;
	case ESmbMusicAPFileMgrRscMgrMemoryModeRscCategory:	//儊儌儕儌乕僪儕僜乕僗梫媮
		rscPriority.iRscId    = ESmbRscMgrRscExtMemoryAccess;		// 儊儌儕儌乕僪
		rscPriority.iPriority = KSmbRscMgrRscPriorityValueNormal;
		iCategory = EMemoryModeRscCategory;
		break;
	case ESmbMusicAPFileMgrRscMgrMTPModeRscCategory:	//MTP儌乕僪儕僜乕僗梫媮
		rscPriority.iRscId    = ESmbRscMgrRscMTPModeForInternal;	// MTP儌乕僪
		rscPriority.iPriority = KSmbRscMgrRscPriorityValueNormal;
		iCategory = EMTPModeRscCategory;
		break;
	default:
		//堎忢宯
		//儘僌弌椡
		OUTPUT_LOG_ERROR("CSmbMusicAPFileMgrRscMgr::RequestAllocResourceSyncL()[NG!]");
		return KErrArgument;
		}
		
	//儕僜乕僗庢摼嵪傒偺応崌
	if(ERscMgrAllocRsc == State(iCategory))
		{
		//儕僜乕僗庢摼嵪傒偺応崌偼惓忢宯偲偟偰僴儞僪儕儞僌
		iCategory = KErrNotFound;
		return KErrInUse;
		}
		
	//儕僜乕僗枹庢摼忬懺埲奜偺応崌
	if(ERscMgrRscNone != State(iCategory))
		{
		OUTPUT_LOG_MUST("ERROR::ERscMgrRscNone != iRscMgrState");
		iCategory = KErrNotFound;
		return KErrServerBusy;
		}
		
	//妉摼儕僜乕僗儕僗僩惗惉
	CArrayFixFlat<TSmbRscMgrRscPriority>* rscPriorityList = new (ELeave) CArrayFixFlat<TSmbRscMgrRscPriority>(KSmbRscMgrAppRscListMax);

	CleanupStack::PushL(rscPriorityList);
	
	//惗惉嵪傒側傜偽堦扷嶍彍偟偰惗惉
	if (NULL != iRscResultList)
		{
		delete iRscResultList;
		iRscResultList = NULL;
		}
	iRscResultList = new (ELeave) CArrayFixFlat<TSmbRscMgrRscAllocId>(KSmbRscMgrAppRscListMax);
	
	//梫媮儕僜乕僗傪Append
	rscPriorityList->AppendL(rscPriority);		

	//儕僜乕僗妉摼梫媮
	TSmbRscMgrRes rscMgrRes = iRscMgrRscClient->AllocationResourceReqL(rscPriorityList, iRscResultList);
	CleanupStack::PopAndDestroy();	//rscPriorityList
	if(ESmbRscMgrResultOK != rscMgrRes)
		{
		//儘僌弌椡
		OUTPUT_LOG("CSmbMusicAPFileMgrRscMgr::RequestAllocResourceL()[NG!]");
		iCategory = KErrNotFound;
		return KErrGeneral;
		}
		
	//儕僜乕僗梫媮拞忬懺偵僙僢僩	
	SetState(iCategory, ERscMgrRequestRscBusy);
	
	return KErrNone;
	}

/**
 * 儕僜乕僗梫媮乮摨婜乯
 */
TInt CSmbMusicAPFileMgrRscMgr::RequestAllocResourceSyncL(TSmbMusicAPFileMgrRscMgrCategory aCategory, TSmbMusicAPFileMgrRscMgrResponse& aRes)
	{
	OUTPUT_FUNC;
	
	//梫媮儕僜乕僗ID僙僢僩
	TSmbRscMgrRscPriority rscPriority;
	TInt category = KErrNotFound;
	switch(aCategory)
		{
	case ESmbMusicAPFileMgrRscMgrSDBindRscCategory:	//SDBind儕僜乕僗梫媮
		rscPriority.iRscId    = ESmbRscMgrRscSdKeyBind;				// SD(Bind)
		rscPriority.iPriority = KSmbRscMgrRscPriorityValueLow;
		category = ESDBindRscCategory;
		break;
	case ESmbMusicAPFileMgrRscMgrMemoryModeRscCategory:	//儊儌儕儌乕僪儕僜乕僗梫媮
		rscPriority.iRscId    = ESmbRscMgrRscExtMemoryAccess;		// 儊儌儕儌乕僪
		rscPriority.iPriority = KSmbRscMgrRscPriorityValueNormal;
		category = EMemoryModeRscCategory;		
		break;
	case ESmbMusicAPFileMgrRscMgrMTPModeRscCategory:	//MTP儌乕僪儕僜乕僗梫媮
		rscPriority.iRscId    = ESmbRscMgrRscMTPModeForInternal;	// MTP儌乕僪
		rscPriority.iPriority = KSmbRscMgrRscPriorityValueNormal;
		category = EMTPModeRscCategory;
		break;
	default:
		//堎忢宯
		//儘僌弌椡
		OUTPUT_LOG_ERROR("CSmbMusicAPFileMgrRscMgr::RequestAllocResourceSyncL()[NG!]");
		return KErrArgument;
		}

	//儕僜乕僗庢摼嵪傒偺応崌
	if(ERscMgrAllocRsc == State(category))
		{
		//丂張棟寢壥	
		aRes = ConvertResultRes(category, ESmbRscMgrRscResultOK);
		return KErrNone;
		}
	
	//儕僜乕僗庢摼拞忬懺偺応崌
	if(ERscMgrRscNone != State(category))
		{
		OUTPUT_LOG_MUST("ERROR::ERscMgrRscNone != iRscMgrState");
		return KErrServerBusy;
		}
		
	//妉摼儕僜乕僗儕僗僩惗惉
	CArrayFixFlat<TSmbRscMgrRscPriority>* rscPriorityList = new (ELeave) CArrayFixFlat<TSmbRscMgrRscPriority>(KSmbRscMgrAppRscListMax);

	CleanupStack::PushL(rscPriorityList);
	
	//惗惉嵪傒側傜偽堦扷嶍彍偟偰惗惉
	if (NULL != iRscResultList)
		{
		delete iRscResultList;
		iRscResultList = NULL;
		}
	iRscResultList = new (ELeave) CArrayFixFlat<TSmbRscMgrRscAllocId>(KSmbRscMgrAppRscListMax);
	
	//梫媮儕僜乕僗傪Append		
	rscPriorityList->AppendL(rscPriority);
	
	//儕僜乕僗妉摼梫媮
	TSmbRscMgrRscResult result;
	TSmbRscMgrRes rscMgrRes = iRscMgrRscClient->AllocationResourceReqSyncL(rscPriorityList, iRscResultList, result);
	CleanupStack::PopAndDestroy();	//rscPriorityList
	if(ESmbRscMgrResultOK != rscMgrRes)
		{
		//儘僌弌椡
		OUTPUT_LOG("CSmbMusicAPFileMgrRscMgr::RequestAllocResourceL()[NG!]");
		return KErrGeneral;
		}
		
	//丂張棟寢壥	
	aRes = ConvertResultRes(category, result);
	
	return KErrNone;
	}

/**
 * 儕僜乕僗奐曻
 */
void CSmbMusicAPFileMgrRscMgr::ReleaseResourceL(TSmbMusicAPFileMgrRscMgrCategory aCategory)
	{
	OUTPUT_FUNC;

	if (NULL != iRscResultList)
		{
		//夝曻儕僜乕僗ID僙僢僩	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -