📄 smbmusicapsyncservercontentsobserveupdatemanager.cpp
字号:
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 + -