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

📄 smbmusicapsyncservercontentsobserveupdatemanager.cpp

📁 索爱相关代码。实现功能是server。很有参考价值。代码很难弄到。symbian。
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		result = ClearUpdateBuffer();
		if (result != KErrNone)
			{	//  僶僢僼傽偺僋儕傾偵幐攕偟偨応崌
			return result;
			}
		}

	//  巜掕偝傟偨僴儞僪儖傪娔帇懳徾僴儞僪儖攝楍偵捛壛
	result = iHandleArray.Append(aHandle);
	if (result != KErrNone)
		{	//  捛壛幐攕
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
		logCode = EMusicAPSyncServerClassNumber_ContentsObserveUpdateManager | EMusicAPSyncServerLocationNumber06;
		_LIT(KObserveUpdateManagerStartObservation02, "SyncServerContentsObserveUpdateManager::StartObservation() Append Error:%d");
		SmbMusicAPSyncServerLog(iLog, logCode, ELogLevelNormal, KObserveUpdateManagerStartObservation02, result);
#endif
		return result;
		}

	result = Start();
	if (result != KErrNone)
		{	//  峏怴忣曬捠抦奐巒偵幐攕偟偨応崌
		return result;
		}

	return KErrNone;
	}


/**
 *  峏怴捠抦娔帇拞巭
 *
 *  @param[in]	aHandle	娔帇懳徾偐傜彍奜偡傞僴儞僪儖(0偺応崌慡偰偺娔帇傪拞巭偡傞)
 **/
void CSmbMusicAPSyncServerContentsObserveUpdateManager::StopObservation(TInt aHandle)
	{
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
	TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsObserveUpdateManager | EMusicAPSyncServerLocationNumber07;
	_LIT(KObserveUpdateManagerStopObservation01, "SyncServerContentsObserveUpdateManager::StopObservation(0x%08x)");
	SmbMusicAPSyncServerLog(iLog, logCode, ELogLevelLow, KObserveUpdateManagerStopObservation01, aHandle);
#endif

	if (aHandle == 0)
		{	//  娔帇拞巭懳徾僴儞僪儖偑0偺応崌
		//  慡偰偺娔帇傪掆巭偡傞
		if (IsActive() != EFalse)
			{
			Cancel();
			}
		iHandleArray.Reset();
		return;
		}

	//  巜掕僴儞僪儖傪娔帇拞巭懳徾僴儞僪儖偐傜彍奜
	for (TInt i = 0; i < iHandleArray.Count(); i++)
		{
		if (iHandleArray[i] == aHandle)
			{
			iHandleArray.Remove(i);
			break;
			}
		}

	if (iHandleArray.Count() == 0)
		{	//  娔帇懳徾僴儞僪儖偑0偵側偭偨応崌
		//  娔帇傪掆巭偡傞
		if (IsActive() != EFalse)
			{
			Cancel();
			}
		}

	return;
	}


/**
 *  梫媮姰椆懸偪奐巒
 *
 *  @return	張棟寢壥(KErrNone:張棟惉岟丄System-wide Error:張棟幐攕)
 **/
TInt CSmbMusicAPSyncServerContentsObserveUpdateManager::Start()
	{
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
	TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsObserveUpdateManager | EMusicAPSyncServerLocationNumber08;
	_LIT(KObserveUpdateManagerStart01, "SyncServerContentsObserveUpdateManager::Start()");
	SmbMusicAPSyncServerLog(iLog, logCode, ELogLevelLow, KObserveUpdateManagerStart01);
#endif

	if (IsActive() != EFalse)
		{
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
		logCode = EMusicAPSyncServerClassNumber_ContentsObserveUpdateManager | EMusicAPSyncServerLocationNumber09;
		_LIT(KObserveUpdateManagerStart02, "SyncServerContentsObserveUpdateManager::Start() already Active");
		SmbMusicAPSyncServerLog(iLog, logCode, ELogLevelNormal, KObserveUpdateManagerStart02);
#endif
		return KErrNone;
		}

	iStatus = KRequestPending;
	SetActive();

	//@@TRK11769懳墳	Add	Start
	//僙僢僔儑儞傪愙懕偡傞
	ConnectMusicLibSession();
	//@@TRK11769懳墳	Add	End

	TInt result = iLibSession.WaitItemUpdateNotify(iStatus);
	if (result != KErrNone)
		{
		TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsObserveUpdateManager | EMusicAPSyncServerLocationNumber10;
		_LIT(KObserveUpdateManagerStart02, "SyncServerContentsObserveUpdateManager::Start() WaitItemUpdateNotify Error:%d");
		SmbMusicAPSyncServerLog(iLog, logCode, ELogLevelHigh, KObserveUpdateManagerStart02, result);

		Cancel();
		return result;
		}

	return KErrNone;
	}


/**
 *  MW偺峏怴忣曬僶僢僼傽傪僋儕傾偡傞
 *
 *  @return	張棟寢壥(KErrNone:張棟惉岟丄System-wide Error:張棟幐攕)
 **/
TInt CSmbMusicAPSyncServerContentsObserveUpdateManager::ClearUpdateBuffer()
	{
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
	TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsObserveUpdateManager | EMusicAPSyncServerLocationNumber11;
	_LIT(KObserveUpdateManagerClearUpdateBuffer01, "SyncServerContentsObserveUpdateManager::ClearUpdateBuffer()");
	SmbMusicAPSyncServerLog(iLog, logCode, ELogLevelLow, KObserveUpdateManagerClearUpdateBuffer01);
#endif

	TInt result(KErrNone);
	TInt dataCount(1);
	TSmbMusicMWLibUpdateInfo dummy;

	do {
		//  撉傒崬傒僶僢僼傽偺弨旛
//  ADD-S  [iKeeper(TRK):11264,11279] 僶僢僼傽僋儕傾帪偺忋尷傪愝掕
		if (dataCount > KSmbMusicAPSyncServerUpdateInfoArrayMaxCount)
			{	//  撉傒崬傒悢偑僶僢僼傽忋尷埲忋偺応崌
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
			logCode = EMusicAPSyncServerClassNumber_ContentsObserveUpdateManager | EMusicAPSyncServerLocationNumber12;
			_LIT(KObserveUpdateManagerClearUpdateBuffer02, "SyncServerContentsObserveUpdateManager::ClearUpdateBuffer dataCount Overflow:%d");
			SmbMusicAPSyncServerLog(iLog, logCode, ELogLevelLow, KObserveUpdateManagerClearUpdateBuffer02, dataCount);
#endif
			dataCount = KSmbMusicAPSyncServerUpdateInfoArrayMaxCount;
			}
//  ADD-E  [iKeeper(TRK):11264,11279] 僶僢僼傽僋儕傾帪偺忋尷傪愝掕

		iUpdateArray.Reset();
		TRAP(result, iUpdateArray.AppendL(&dummy, dataCount););
		if (result != KErrNone)
			{	//  撉傒崬傒僶僢僼傽偺弨旛偵幐攕
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
			logCode = EMusicAPSyncServerClassNumber_ContentsObserveUpdateManager | EMusicAPSyncServerLocationNumber13;
			_LIT(KObserveUpdateManagerClearUpdateBuffer03, "SyncServerContentsObserveUpdateManager::ClearUpdateBuffer() Append is Leave:%d");
			SmbMusicAPSyncServerLog(iLog, logCode, ELogLevelNormal, KObserveUpdateManagerClearUpdateBuffer03, result);
#endif
			return result;
			}

		//@@TRK11769懳墳	Add	Start
		//僙僢僔儑儞傪愙懕偡傞
		ConnectMusicLibSession();
		//@@TRK11769懳墳	Add	End

		result = iLibSession.GetUpdateInfo(iUpdateArray, dataCount);
		if (result == KErrOverflow)
			{	//  張棟寢壥偑Overflow偺応崌
			//  MW偺僶僢僼傽偼弶婜壔偝傟傞偺偱張棟姰椆
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
			logCode = EMusicAPSyncServerClassNumber_ContentsObserveUpdateManager | EMusicAPSyncServerLocationNumber14;
			_LIT(KObserveUpdateManagerClearUpdateBuffer04, "SyncServerContentsObserveUpdateManager::ClearUpdateBuffer() MW buffer Overflow");
			SmbMusicAPSyncServerLog(iLog, logCode, ELogLevelLow, KObserveUpdateManagerClearUpdateBuffer04);
#endif
			return KErrNone;
			}
		else if (result != KErrNone)
			{	//  張棟寢壥偑偦偺懠僄儔乕偺応崌
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
			logCode = EMusicAPSyncServerClassNumber_ContentsObserveUpdateManager | EMusicAPSyncServerLocationNumber15;
			_LIT(KObserveUpdateManagerClearUpdateBuffer05, "SyncServerContentsObserveUpdateManager::ClearUpdateBuffer() GetUpdateInfo Error:%d");
			SmbMusicAPSyncServerLog(iLog, logCode, ELogLevelNormal, KObserveUpdateManagerClearUpdateBuffer05, result);
#endif
			return result;
			}
	} while(dataCount > 0);	//  MW偺僶僢僼傽偑嬻偵側傞傑偱孞傝曉偡

	return result;
	}


/**
 *  峏怴忣曬敾掕
 *
 *  @param[in]	aUpdateInfo	MW偐傜庢摼偟偨峏怴捠抦忣曬
 **/
void CSmbMusicAPSyncServerContentsObserveUpdateManager::HandleItemUpdateNotify(TSmbMusicMWLibUpdateInfo aUpdateInfo)
	{
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
	TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsObserveUpdateManager | EMusicAPSyncServerLocationNumber16;
	_LIT(KObserveUpdateManagerHandleItemUpdateNotify01, "SyncServerContentsObserveUpdateManager::HandleItemUpdateNotify() Handle:0x%08x Type:%d Param:%x");
	SmbMusicAPSyncServerLog(iLog, logCode, ELogLevelLow, KObserveUpdateManagerHandleItemUpdateNotify01, aUpdateInfo.iHandle, aUpdateInfo.iUpdateType, aUpdateInfo.iParam);
#endif

	if (aUpdateInfo.iUpdateType == ESmbMusicMWLibUpdateAddInList)
		{	//  捠抦僀儀儞僩偑傾僀僥儉捛壛偺応崌
		for (TInt i = 0; i < iHandleArray.Count(); i++)
			{
			if (aUpdateInfo.iHandle == iHandleArray[i])
				{	//  捠抦偝傟偨忣曬偺僴儞僪儖偑娔帇懳徾僴儞僪儖偲摨偠応崌
				//  傾僾儕偵捛壛捠抦傪峴偄張棟廔椆
				iManagers.AppNotifyManager().NotifyCreateItem(aUpdateInfo.iHandle, aUpdateInfo.iParam);
				iHandleArray.Remove(i);
				break;
				}
			}
		}
	}

//@@TRK11769懳墳	Add	Start
//JAVA偑婲摦拞偵攚柺偐傜僒僽僾儗僀儎乕傪婲摦偡傞偲MusicMWLib偺桪愭搙偑掅偔愝掕偝傟偰偄傞偨傔
//偦偺帪傾僋僙僗偡傞偲墳摎偑旕忢偵抶偔側傞
//偦偙偱摨婜僒乕僶偼昁梫偵側偭偨帪偵僙僢僔儑儞傪愙懕偡傞傛偆偵廋惓偟傑偡
//杮棃偼丄抂枛婲摦帪偵FjSakStart偵偰摨婜僒乕僶傪婲摦偡傞傛偆偵廋惓偡傋偒偩偑崱偐傜偱偼塭嬁斖埻偑
//戝偒偄偨傔偙偺傛偆側廋惓傪偟傑偡 by娵壀
/**
 *  MusicMWLib偲僙僢僔儑儞傪愙懕偟偰偄傞偐妋擣乮愙懕偟偰偄側偗傟偽愙懕偡傞乯
 *
 *  @param[in]	側偟
 *  @param[out]	側偟
 *
 *	@return	張棟寢壥
 **/
void CSmbMusicAPSyncServerContentsObserveUpdateManager::ConnectMusicLibSession()
	{
	TInt handle = iLibSession.Handle();
	//僴儞僪儖偑桳岠偱側偗傟偽僙僢僔儑儞偺愙懕傪偡傞
	if(handle < KSmbMusicAPSyncServerContentsAvalablueHandle)
		{
		//MusicMWLib偲僙僢僔儑儞傪愙懕偡傞
		TInt ret = iLibSession.Connect();
		if(KErrNone != ret)
			{
			//僙僢僔儑儞傪愙懕偱偒側偄偺偱儘僌傪弌椡偟傑偡
			TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsObserveUpdateManager | EMusicAPSyncServerLocationNumber17;
			_LIT(KObserveUpdateManagerConnect, "SyncServerContentsObserveUpdateManager::ConnectMusicLibSession Connect Error = %d");
			SmbMusicAPSyncServerLog(iLog, logCode, ELogLevelHighest, KObserveUpdateManagerConnect);

			//摨婜僒乕僶偱偼壗傕偱偒側偄偺偱Panic偟傑偡
			PANIC(ESmbMusicAPSyncServerPanicNumber04);
			}
		}
	}
//@@TRK11769懳墳	Add	End

// end of SmbMusicAPSyncServerContentsObserveUpdateManager.cpp

/* Copyright (C) 2006 Sony Ericsson Mobile Communications Japan, Inc. */

⌨️ 快捷键说明

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