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

📄 smbmusicapsyncservercontentsservicegetsonglimitinfo.cpp

📁 索爱相关代码。实现功能是server。很有参考价值。代码很难弄到。symbian。
💻 CPP
📖 第 1 页 / 共 2 页
字号:
				//  張棟廔椆
				retState = ESmbMusicAPSyncServerContetnsServiceStateErr;
				}
			}
			break;
		case EContentsServiceGetSongLimitInfoStateGetLimitInfo:	//  嵞惗惂尷忣曬庢摼拞
			{
			TInt result = GetConditionAndId();	//  嵞惗惂尷忬懺丒嬋ID庢摼
			if (result == KErrNone)
				{	//  嵞惗惂尷忬懺丒嬋ID庢摼偵惉岟
				//  僋儔僀傾儞僩傊偺忣曬彂偒弌偟
				result = CompletionGetSongLimitInfo();
				}
			if (result != KErrNone)
				{  //  嵞惗惂尷忬懺丒嬋ID庢摼偐僋儔僀傾儞僩傊偺忣曬彂偒弌偟偑僄儔乕
				//  僄儔乕偱張棟廔椆
				retState = ESmbMusicAPSyncServerContetnsServiceStateErr;
				}
			else
				{
				//  張棟廔椆
				retState = ESmbMusicAPSyncServerContetnsServiceStateEnd;
				}

			MessageComplete(result);
			//  枹幚峴忬懺傊
			iServiceState = EContentsServiceGetSongLimitInfoStateIdle;
			}
			break;
		case EContentsServiceGetSongLimitInfoStateIdle:				//  張棟柍偟
		//  張棟柍偟忬懺偵ContinueService偑屇偽傟傞偙偲偼堎忢宯偱偁傞偨傔default摨條偵張棟偡傞丅
		default:
			{
			TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServiceGetSongLimitInfo | EMusicAPSyncServerLocationNumber10;
			_LIT(KServiceGetSongLimitInfoContinueServiceL02, "SyncServerContentsServiceGetSongLimitInfo::ContinueServiceL illegal default-route:%d");
			SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelHighest, KServiceGetSongLimitInfoContinueServiceL02, iServiceState);

			ASSERT(EFalse);
			}
			break;
		}

	return retState;
	}


/**
 *  僷儔儊乕僞撉崬
 *
 *  @return	僷儔儊乕僞撉崬惉斲(ETrue:栤戣側偟丄EFalse:栤戣偁傝)
 **/
TBool CSmbMusicAPSyncServerContentsServiceGetSongLimitInfo::LoadParam()
	{
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
	TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServiceGetSongLimitInfo | EMusicAPSyncServerLocationNumber11;
	_LIT(KServiceGetSongLimitInfoLoadParam01, "SyncServerContentsServiceGetSongLimitInfo::LoadParam");
	SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelLow, KServiceGetSongLimitInfoLoadParam01);
#endif

	//  摨婜僄儞僕儞偐傜偺梫媮儊僢僙乕僕偺撉崬
	TInt maxLen = iRMessage.GetDesLength(KSmbMusicAPSyncEngineMsgIn1);
	if (maxLen < sizeof(TSmbMusicAPSyncServerContentsReqPkg))
		{	//  僋儔僀傾儞僩偐傜偺梫媮儊僢僙乕僕挿偑堎忢側応崌
		TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServiceGetSongLimitInfo | EMusicAPSyncServerLocationNumber12;
		_LIT(KServiceGetSongLimitInfoLoadParam02, "SyncServerContentsServiceGetSongLimitInfo::LoadParam Argument 1 Error:%d");
		SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelHigh, KServiceGetSongLimitInfoLoadParam02, maxLen);

		return EFalse;
		}

	//  梫媮僷僢働乕僕偺撉崬
	TInt error(KErrNone);
	TSmbMusicAPSyncServerContentsReqPkg reqPkg;
	TPckg<TSmbMusicAPSyncServerContentsReqPkg> pkg(reqPkg);
	error = iRMessage.Read(KSmbMusicAPSyncEngineMsgIn1, pkg);
	if (error != KErrNone)
		{	//  僋儔僀傾儞僩偐傜偺梫媮儊僢僙乕僕偺撉崬偵幐攕
		TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServiceGetSongLimitInfo | EMusicAPSyncServerLocationNumber13;
		_LIT(KServiceGetSongLimitInfoLoadParam03, "SyncServerContentsServiceGetSongLimitInfo::LoadParam ContentsReqPkg Load Error:%d");
		SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelHigh, KServiceGetSongLimitInfoLoadParam03, error);

		return EFalse;
		}

	//  庢摼懳徾嬋傾僀僥儉忣曬
	iItemIndex = reqPkg.iData.iGetSongLimitInfo.iSongItem;	//  懳徾嬋傾僀僥儉忣曬
	iItemIndex.iIndex++;	//  index僆儕僕儞傪挷惍

	return ETrue;
	}


/**
 *  懳徾嬋傾僀僥儉愝掕丒嵞惗惂尷庬暿敾掕
 *
 *  @return	張棟惉斲(KErrNone:張棟惉岟丄System-wide Error:張棟幐攕)
 **/
TInt CSmbMusicAPSyncServerContentsServiceGetSongLimitInfo::CheckSongLimitation()
	{
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
	TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServiceGetSongLimitInfo | EMusicAPSyncServerLocationNumber14;
	_LIT(KServiceGetSongLimitInfoCheckSongLimitation01, "SyncServerContentsServiceGetSongLimitInfo::CheckSongLimitation() Start");
	SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelLow, KServiceGetSongLimitInfoCheckSongLimitation01);
#endif

	//  庢摼偟偨儕僗僩攝楍偺梫慺悢僠僃僢僋
	if (iItemArray -> Count() < 1)
		{	//  梫慺悢偑懌傝側偄(1側偄)応崌
		TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServiceGetSongLimitInfo | EMusicAPSyncServerLocationNumber15;
		_LIT(KServiceGetSongLimitInfoCheckSongLimitation02, "SyncServerContentsServiceGetSongLimitInfo::CheckSongLimitation no enough array:%d");
		SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelHigh, KServiceGetSongLimitInfoCheckSongLimitation02, iItemArray -> Count());

		return KErrNotReady;
		}

	//  懳徾嬋傾僀僥儉弶婜壔
	delete iSongItem;
	iSongItem = NULL;

	//  庢摼偟偨儕僗僩攝楍偐傜嬋傾僀僥儉傪庢傝弌偡
	TRAPD(error, iSongItem = static_cast<CSmbMusicMWLibSongItem*>(iItemArray -> GetMusicItemL(0)););
	if (error != KErrNone)
		{	//  嬋傾僀僥儉偺庢傝弌偟偵幐攕偟偨応崌
		TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServiceGetSongLimitInfo | EMusicAPSyncServerLocationNumber16;
		_LIT(KServiceGetSongLimitInfoCheckSongLimitation03, "SyncServerContentsServiceGetSongLimitInfo::CheckSongLimitation GetMusicItemL is Leave:%d");
		SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelHigh, KServiceGetSongLimitInfoCheckSongLimitation03, error);

		return error;
		}
	if (iSongItem == NULL)
		{	//  庢傝弌偟偨嬋傾僀僥儉偑NULL偩偭偨応崌
		TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServiceGetSongLimitInfo | EMusicAPSyncServerLocationNumber17;
		_LIT(KServiceGetSongLimitInfoCheckSongLimitation04, "SyncServerContentsServiceGetSongLimitInfo::CheckSongLimitation GetMusicItemL is NULL");
		SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelHigh, KServiceGetSongLimitInfoCheckSongLimitation04);

		return KErrNotFound;
		}

	//  傾僀僥儉儕僗僩偺弶婜壔
	iItemArray -> Reset();

	const TSmbMusicMWLibDispSongInfo* dispInfo = iSongItem -> DispInformation();	//  嵞惗昞帵梡忣曬庢摼
	if (dispInfo == NULL)
		{
		TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServiceGetSongLimitInfo | EMusicAPSyncServerLocationNumber18;
		_LIT(KServiceGetSongLimitInfoCheckSongLimitation05, "SyncServerContentsServiceGetSongLimitInfo::CheckSongLimitation DispInformation is NULL");
		SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelHigh, KServiceGetSongLimitInfoCheckSongLimitation05);

		return KErrNotFound;
		}

	//  嵞惗惂尷庬暿庢摼
#ifdef	__SMBMUSICAPSYNCSERVER_ENABLE_PTX810__
	TSmbMusicAPSyncEngineLimitation limitation(ESmbMusicAPSyncEngineLimitNone);
#else	//  __SMBMUSICAPSYNCSERVER_ENABLE_PTX810__
	TSmbMusicAPSyncEngineLimitation limitation = TSmbMusicAPSyncServerConverter::ConvertLimitation(dispInfo -> iLimitation, &iRLog);
#endif	//  __SMBMUSICAPSYNCSERVER_ENABLE_PTX810__
	iLimitInfo.iLimitation = limitation;
	if (limitation != ESmbMusicAPSyncEngineLimitSubscription)
		{	//  懳徾嬋偑僒僽僗僋儕僾僔儑儞埲奜偺応崌
		return KErrCompletion;	//  屻偱KErrNone偵曄姺
		}

	return KErrNone;
	}


/**
 *  嵞惗惂尷忣曬庢摼
 *
 *  @param[in]	aType	庢摼偡傞夋憸偺僞僀僾
 *
 *  @return	張棟寢壥(KErrNone:張棟惉岟丄System-wide Error:張棟幐攕)
 **/
TInt CSmbMusicAPSyncServerContentsServiceGetSongLimitInfo::LimitInformation()
	{
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
	TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServiceGetSongLimitInfo | EMusicAPSyncServerLocationNumber19;
	_LIT(KServiceGetSongLimitInfoLimitInformation01, "SyncServerContentsServiceGetSongLimitInfo::LimitInformation()");
	SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelLow, KServiceGetSongLimitInfoLimitInformation01);
#endif
	TInt result(KErrNone);
	//  嵞惗惂尷忣曬庢摼
	result = iSongItem -> LimitInformation(iSongLimit, iStatus);
	if (result != KErrNone)
		{		//  嵞惗惂尷忣曬庢摼梫媮偵幐攕
		TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServiceGetSongLimitInfo | EMusicAPSyncServerLocationNumber20;
		_LIT(KServiceGetSongLimitInfoLimitInformation02, "SyncServerContentsServiceGetSongLimitInfo::LimitInformation LimitInformation Error = %d");
		SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelHigh, KServiceGetSongLimitInfoLimitInformation02, result);
		}

	return result;
	}

/**
 *  嵞惗惂尷忬懺偲嬋ID庢摼
 *
 *  @return	張棟寢壥(KErrNone:張棟惉岟丄System-wide Error:張棟幐攕)
 **/
TInt CSmbMusicAPSyncServerContentsServiceGetSongLimitInfo::GetConditionAndId()
	{
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
	TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServiceGetSongLimitInfo | EMusicAPSyncServerLocationNumber21;
	_LIT(KServiceGetSongLimitInfoGetConditionAndId01, "SyncServerContentsServiceGetSongLimitInfo::GetConditionAndId()");
	SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelLow, KServiceGetSongLimitInfoGetConditionAndId01);
#endif
	iLimitInfo.iLimitCondition = ESmbMusicAPSyncEngineLimitInvalid;	//  嵞惗惂尷忬懺柍岠
	iLimitInfo.iProhibition = iSongLimit.iProhibition;	//  嵞惗嬛巭巜掕忬懺

	//  嬋ID庢摼
	TInt result = iSongItem -> SongId(iLimitInfo.iSongId);
	if (result != KErrNone)
		{
		TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServiceGetSongLimitInfo | EMusicAPSyncServerLocationNumber23;
		_LIT(KServiceGetSongLimitInfoGetConditionAndId03, "SyncServerContentsServiceGetSongLimitInfo::GetConditionAndId SongId Error = %d");
		SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelHigh, KServiceGetSongLimitInfoGetConditionAndId03, result);

		return result;
		}

#ifdef	__SMBMUSICAPSYNCSERVER_ENABLE_PTX810__
	iLimitInfo.iIsExistCpInfo = ETrue;
	iLimitInfo.iLimitCondition = ESmbMusicAPSyncEngineLimitAnythingGoes;
#else	//  __SMBMUSICAPSYNCSERVER_ENABLE_PTX810__
	iLimitInfo.iIsExistCpInfo = iSongLimit.iIsExistCpInfo;
	if (iSongLimit.iIsExistCpInfo == EFalse)
		{	//  堏摦婡撪偵尃棙忣曬偑側偄応崌
		//  嵞惗惂尷忬懺庢摼偼峴傢偢張棟傪姰椆偝偣傞
		return KErrNone;
		}
//  ADD-S  [D_82400015314]RTC僄儔乕偺敾掕傪捛壛
	else if (iSongLimit.iRtcErrHistory != EFalse)
		{	//  RTC僄儔乕敪惗忬懺偺応崌
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
		logCode = EMusicAPSyncServerClassNumber_ContentsServiceGetSongLimitInfo | EMusicAPSyncServerLocationNumber26;
		_LIT(KServiceGetSongLimitInfoGetConditionAndId05, "SyncServerContentsServiceGetSongLimitInfo::GetConditionAndId RTCError = %d");
		SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelHigh, KServiceGetSongLimitInfoGetConditionAndId05,iSongLimit.iRtcErrHistory);
#endif
		//  RTC僄儔乕傪曉媝偡傞
		iLimitInfo.iLimitCondition = ESmbMusicAPSyncEngineLimitRtcErrorOccurred;
		return KErrNone;
		}
//  ADD-E  [D_82400015314]RTC僄儔乕偺敾掕傪捛壛
	else if ((iSongLimit.iIsExistCpInfo != EFalse) && (iSongLimit.iExpireDate == 0) && (iSongLimit.iGracePeriod == 0))
		{	//  堏摦婡撪偵偼尃棙忣曬偑側偔SD忋偵尃棙忣曬偑懚嵼偡傞応崌
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
		logCode = EMusicAPSyncServerClassNumber_ContentsServiceGetSongLimitInfo | EMusicAPSyncServerLocationNumber22;
		_LIT(KServiceGetSongLimitInfoGetConditionAndId02, "SyncServerContentsServiceGetSongLimitInfo::GetConditionAndId CRinfo on SD Exist:%d Expire:%ld Grace:%d");
		SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelHigh, KServiceGetSongLimitInfoGetConditionAndId02,
								iSongLimit.iIsExistCpInfo, iSongLimit.iExpireDate.Int64(), iSongLimit.iGracePeriod);
#endif
		//  嵞惗惂尷忬懺庢摼偼峴傢偢張棟傪姰椆偝偣傞
		return KErrNone;
		}

	//  嵞惗惂尷忬懺庢摼
	TSmbMusicMWLibLimitCondition condition(ESmbMusicMWLibLimitAnythingGoes);
	result = iSongLimit.LimitCondition(condition);
	if (result != KErrNone)
		{
		TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServiceGetSongLimitInfo | EMusicAPSyncServerLocationNumber22;
		_LIT(KServiceGetSongLimitInfoGetConditionAndId02, "SyncServerContentsServiceGetSongLimitInfo::GetConditionAndId LimitCondition Error = %d");
		SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelHigh, KServiceGetSongLimitInfoGetConditionAndId02, result);

		return result;
		}
	iLimitInfo.iLimitCondition = TSmbMusicAPSyncServerConverter::ConvertLimitCondition(condition, &iRLog);
#endif	//  __SMBMUSICAPSYNCSERVER_ENABLE_PTX810__
	return KErrNone;
	}


/**
 *  僋儔僀傾儞僩偺墳摎偲偟偰惂尷忣曬傪彂偒弌偡
 *
 *  @return	張棟寢壥
 **/
TInt CSmbMusicAPSyncServerContentsServiceGetSongLimitInfo::CompletionGetSongLimitInfo()
	{
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
	TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServiceGetSongLimitInfo | EMusicAPSyncServerLocationNumber24;
	_LIT(KServiceGetSongLimitInfoCompletionGetSongLimitInfo01, "SyncServerContentsServiceGetSongLimitInfo::CompletionGetSongLimitInfo() Limitaion:%d Condition:%d SongId:%016lx IsExistCpInfo:%d");
	SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelLow, KServiceGetSongLimitInfoCompletionGetSongLimitInfo01,
							iLimitInfo.iLimitation,
							iLimitInfo.iLimitCondition,
							iLimitInfo.iSongId,
							iLimitInfo.iIsExistCpInfo);
#endif
	//  庢摼偟偨惂尷忣曬傪彂偒弌偡
	TPckg<TSmbMusicAPSyncEngineLimitInfo> pkg(iLimitInfo);
	TInt result = iRMessage.Write(KSmbMusicAPSyncEngineMsgOut1, pkg);
	if (result != KErrNone)
		{	//  彂偒崬傒偵幐攕
		TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServiceGetSongLimitInfo | EMusicAPSyncServerLocationNumber25;
		_LIT(KServiceGetSongLimitInfoCompletionGetSongLimitInfo02, "SyncServerContentsServiceGetSongLimitInfo::CompletionGetSongLimitInfo Message Write Error:%d");
		SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelNormal, KServiceGetSongLimitInfoCompletionGetSongLimitInfo02, result);
		}

	return result;
	}


// end of SmbMusicAPSyncServerContentsServiceGetSongLimitInfo.cpp

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

⌨️ 快捷键说明

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