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

📄 smbmusicapsyncservercontentsserviceplduplicate.cpp

📁 索爱相关代码。实现功能是server。很有参考价值。代码很难弄到。symbian。
💻 CPP
📖 第 1 页 / 共 2 页
字号:
			error = InitializeDuplication();
			if (error != KErrNone)
				{	//  僾儗僀儕僗僩暋惢慜張棟偵幐攕
				MessageComplete(error);

				//  枹幚峴忬懺傊
				iServiceState = EContentsServicePLDuplicateStateIdle;

				//  僾儗僀儕僗僩傾僀僥儉攋婞
				iItemArray -> Reset();
				//  僆乕僾儞張棟偵幐攕偟偰傞偺偱偙偙偱偼Close偼峴傢側偄
				delete iPLList;
				iPLList = NULL;

				//  僾儗僀儕僗僩柤偺奐曻
				delete iPLTitle;
				iPLTitle = NULL;

				//  張棟廔椆
				retState = ESmbMusicAPSyncServerContetnsServiceStateErr;
				}
			else
				{
				//  暋惢尦僾儗僀儕僗僩僆乕僾儞拞忬懺傊
				iServiceState = EContentsServicePLDuplicateStateOpenPL;

				CSmbMusicAPSyncServerContentsServiceBase::Start();
				//  張棟宲懕
				retState = ESmbMusicAPSyncServerContetnsServiceStateContinue;
				}
			}
			break;
		case EContentsServicePLDuplicateStateOpenPL:	//  暋惢尦僾儗僀儕僗僩僆乕僾儞拞
			{
			TInt error(KErrNone);
			TBool cacheAllDelete(EFalse);
			// 儗僕儏乕儉忣曬偵奩摉偺僾儗僀儕僗僩偑偁傞応崌偼丄儕僗僩傾僀僥儉偺忣曬傪峏怴偡傞丅
			CSmbMusicAPSyncServerContentsList* list = iScreenData.GetLastListFromPlayScreenTrace();
			if(list != NULL)
				{
				CSmbMusicMWLibMusicItem& item = list -> GetListItem();
				if(ESmbMusicMWLibItemTypePL == item.ItemType())
					{
					cacheAllDelete = ETrue;
					}
				}

			if(EFalse == cacheAllDelete)
				{
				//  僒乕僶懁偺奩摉儕僗僩偺傾僀僥儉傪慡偰攋婞丅
				iScreenData.DeleteItem(iListHandle);
				}
			else
				{
				//  僒乕僶懁偺傾僀僥儉傪慡偰攋婞丅
				iScreenData.DeleteAllItem();
				}

			//  僾儗僀儕僗僩暋惢張棟
			error = DuplicateUserPlayList();
			if (error != KErrNone)
				{	//  僾儗僀儕僗僩暋惢梫媮張棟幐攕
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
				logCode = EMusicAPSyncServerClassNumber_ContentsServicePLDuplicate | EMusicAPSyncServerLocationNumber10;
				_LIT(KServicePLDuplicateContinueServiceL02, "SyncServerContentsServicePLDuplicate::ContinueServiceL() DuplicateUserPlayList Error:%d");
				SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelNormal, KServicePLDuplicateContinueServiceL02, error);
#endif

				MessageComplete(error);

				//  枹幚峴忬懺傊
				iServiceState = EContentsServicePLDuplicateStateIdle;

				//  僾儗僀儕僗僩傾僀僥儉攋婞
				iItemArray -> Reset();
				if (iPLList != NULL)
					{	//  僋儘乕僘張棟(僆乕僾儞偟偰側偔偰傕幚峴)
					iPLList -> Close();
					}
				delete iPLList;
				iPLList = NULL;

				//  僾儗僀儕僗僩柤偺奐曻
				delete iPLTitle;
				iPLTitle = NULL;

				//  張棟廔椆
				retState = ESmbMusicAPSyncServerContetnsServiceStateEnd;
				}
			else
				{
				//  僾儗僀儕僗僩暋惢墳摎懸偪忬懺傊
				iServiceState = EContentsServicePLDuplicateStateDuplicate;

				CSmbMusicAPSyncServerContentsServiceBase::Start();
				//  張棟宲懕
				retState = ESmbMusicAPSyncServerContetnsServiceStateContinue;
				}
			}
			break;
		case EContentsServicePLDuplicateStateDuplicate:	//  僾儗僀儕僗僩暋惢墳摎懸偪
			{
			// 儗僕儏乕儉忣曬偵奩摉偺僾儗僀儕僗僩偑偁傞応崌偼丄儕僗僩傾僀僥儉偺忣曬傪峏怴偡傞丅
			CSmbMusicAPSyncServerContentsList* list = iScreenData.GetLastListFromPlayScreenTrace();
			if(list != NULL)
				{
				CSmbMusicMWLibMusicItem& item = list -> GetListItem();
				if( *iPLList == item )
					{
					item.Update();
					}
				}

			//  傾僾儕偵曉媝偡傞抣偼側偄偨傔儕僋僄僗僩姰椆偺傒
			MessageComplete(KErrNone);

			//  枹幚峴忬懺傊
			iServiceState = EContentsServicePLDuplicateStateIdle;

			//  僾儗僀儕僗僩傾僀僥儉攋婞
			iItemArray -> Reset();
			if (iPLList != NULL)
				{	//  僋儘乕僘張棟(僆乕僾儞偟偰側偔偰傕幚峴)
				iPLList -> Close();
				}
			delete iPLList;
			iPLList = NULL;

			//  僾儗僀儕僗僩柤偺奐曻
			delete iPLTitle;
			iPLTitle = NULL;

			//  張棟廔椆
			retState = ESmbMusicAPSyncServerContetnsServiceStateEnd;
			}
			break;

		case EContentsServicePLDuplicateStateIdle:		//  張棟柍偟
		//  張棟柍偟忬懺偵ContinueService偑屇偽傟傞偙偲偼堎忢宯偱偁傞偨傔default摨條偵張棟偡傞丅
		default:
			{
			TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServicePLDuplicate | EMusicAPSyncServerLocationNumber11;
			_LIT(KServicePLDuplicateContinueServiceL03, "SyncServerContentsServicePLDuplicate::ContinueServiceL illegal default-route:%d");
			SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelHighest, KServicePLDuplicateContinueServiceL03, iServiceState);

			ASSERT(EFalse);
			}
			break;
		}

	return retState;
	}


/**
 *  僷儔儊乕僞撉崬
 *
 *  @return	僷儔儊乕僞撉崬惉斲(ETrue:栤戣側偟丄EFalse:栤戣偁傝)
 **/
TBool CSmbMusicAPSyncServerContentsServicePLDuplicate::LoadParamL()
	{
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
	TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServicePLDuplicate | EMusicAPSyncServerLocationNumber12;
	_LIT(KServicePLDuplicateLoadParamL01, "SyncServerContentsServicePLDuplicate::LoadParamL");
	SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelLow, KServicePLDuplicateLoadParamL01);
#endif

	//  摨婜僄儞僕儞偐傜偺梫媮儊僢僙乕僕偺撉崬
	TInt maxLen = iRMessage.GetDesLength(KSmbMusicAPSyncEngineMsgIn1);
	if (maxLen < sizeof(TSmbMusicAPSyncServerContentsReqPkg))
		{	//  僋儔僀傾儞僩偐傜偺梫媮儊僢僙乕僕挿偑堎忢側応崌
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
		logCode = EMusicAPSyncServerClassNumber_ContentsServicePLDuplicate | EMusicAPSyncServerLocationNumber13;
		_LIT(KServicePLDuplicateLoadParamL02, "SyncServerContentsServicePLDuplicate::LoadParamL Argument 1 Error:%d");
		SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelNormal, KServicePLDuplicateLoadParamL02, maxLen);
#endif
		return EFalse;
		}

	TInt error(KErrNone);

	//  梫媮僷僢働乕僕偺撉崬
	TSmbMusicAPSyncServerContentsReqPkg reqPkg;
	TPckg<TSmbMusicAPSyncServerContentsReqPkg> pkg(reqPkg);
	error = iRMessage.Read(KSmbMusicAPSyncEngineMsgIn1, pkg);
	if (error != KErrNone)
		{	//  僋儔僀傾儞僩偐傜偺梫媮儊僢僙乕僕偺撉崬偵幐攕
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
		logCode = EMusicAPSyncServerClassNumber_ContentsServicePLDuplicate | EMusicAPSyncServerLocationNumber14;
		_LIT(KServicePLDuplicateLoadParamL03, "SyncServerContentsServicePLDuplicate::LoadParamL ContentsReqPkg Load Error:%d");
		SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelNormal, KServicePLDuplicateLoadParamL03, error);
#endif
		return EFalse;
		}

	//  曇廤懳徾僾儗僀儕僗僩
	iListHandle	= reqPkg.iData.iDuplicatePL.iListHandle;
	iIndex		= reqPkg.iData.iDuplicatePL.iIndex + 1;	//  index僆儕僕儞傪挷惍

	//  摨婜僄儞僕儞偐傜搉偝傟偨僾儗僀儕僗僩柤傪撉傒崬傓
	delete iPLTitle;
	iPLTitle = NULL;

	TInt titleLength = iRMessage.GetDesLength(KSmbMusicAPSyncEngineMsgIn2);
	if (titleLength < 0 )
		{	//  僾儗僀儕僗僩柤挿偑惓偟偔側偄応崌
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
		logCode = EMusicAPSyncServerClassNumber_ContentsServicePLDuplicate | EMusicAPSyncServerLocationNumber15;
		_LIT(KServicePLDuplicateLoadParamL04, "SyncServerContentsServicePLDuplicate::LoadParamL no enough Length:%d");
		SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelNormal, KServicePLDuplicateLoadParamL04, titleLength);
#endif
		return EFalse;
		}

	iPLTitle = HBufC::NewL(titleLength);
	TPtr ptr = iPLTitle -> Des();
	iRMessage.ReadL(KSmbMusicAPSyncEngineMsgIn2, ptr);

	//  MW傊搉偡僷儔儊乕僞偺弶婜壔
	iRegisterInfo.iTitle.Des().Zero();
	iRegisterInfo.iListId = 0;		//  僾儗僀儕僗僩僼傽僀儖ID傪弶婜壔

	//  傾僾儕偐傜庴偗庢偭偨僾儗僀儕僗僩柤傪MW偵搉偡偺僨乕僞偵僐僺乕
	iRegisterInfo.iTitle = *iPLTitle;

	return ETrue;
	}


/**
 *  僾儗僀儕僗僩暋惢慜張棟
 *
 *  @return	暋惢慜張棟惉斲(KErrNone:張棟惉岟丄偦偺懠:張棟幐攕)
 **/
TInt CSmbMusicAPSyncServerContentsServicePLDuplicate::InitializeDuplication()
	{
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
	TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServicePLDuplicate | EMusicAPSyncServerLocationNumber16;
	_LIT(KServicePLDuplicateDuplicate01, "SyncServerContentsServicePLDuplicate::InitializeDuplication() Start");
	SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelLow, KServicePLDuplicateDuplicate01);
#endif

	//  庢摼偟偨儕僗僩攝楍偺梫慺悢僠僃僢僋
	if (iItemArray -> Count() < 1)
		{	//  梫慺悢偑懌傝側偄(1側偄)応崌
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
		logCode = EMusicAPSyncServerClassNumber_ContentsServicePLDuplicate | EMusicAPSyncServerLocationNumber17;
		_LIT(KServicePLDuplicateDuplicate02, "SyncServerContentsServicePLDuplicate::InitializeDuplication() no enough array:%d");
		SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelNormal, KServicePLDuplicateDuplicate02, iItemArray -> Count());
#endif

		return KErrNotReady;
		}

	//  僾儗僀儕僗僩嬋堦棗傾僀僥儉弶婜壔
	delete iPLList;
	iPLList = NULL;

	//  庢摼偟偨儕僗僩攝楍偐傜僾儗僀儕僗僩傾僀僥儉傪庢傝弌偡
	TRAPD(error, iPLList = static_cast<CSmbMusicMWLibPLItem*>(iItemArray -> GetMusicItemL(0)););
	if (error != KErrNone)
		{	//  僾儗僀儕僗僩傾僀僥儉偺庢傝弌偟偵幐攕偟偨応崌
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
		logCode = EMusicAPSyncServerClassNumber_ContentsServicePLDuplicate | EMusicAPSyncServerLocationNumber18;
		_LIT(KServicePLDuplicateDuplicate03, "SyncServerContentsServicePLDuplicate::InitializeDuplication() GetMusicItemL Error:%d");
		SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelNormal, KServicePLDuplicateDuplicate03, error);
#endif

		return error;
		}
	if (iPLList == NULL)
		{	//  庢傝弌偟偨僾儗僀儕僗僩傾僀僥儉偑NULL偩偭偨応崌
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
		logCode = EMusicAPSyncServerClassNumber_ContentsServicePLDuplicate | EMusicAPSyncServerLocationNumber19;
		_LIT(KServicePLDuplicateDuplicate04, "SyncServerContentsServicePLDuplicate::InitializeDuplication() GetMusicItemL is NULL");
		SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelNormal, KServicePLDuplicateDuplicate04);
#endif

		return KErrNotFound;
		}

	//  庢摼偟偨暋惢尦僾儗僀儕僗僩傪僆乕僾儞偡傞
	TInt retState(KErrNone);
	retState = iPLList -> Open(iStatus);
	if (retState != KErrNone)
		{	//  庢傝弌偟偨僾儗僀儕僗僩傾僀僥儉偑NULL偩偭偨応崌
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
		logCode = EMusicAPSyncServerClassNumber_ContentsServicePLDuplicate | EMusicAPSyncServerLocationNumber20;
		_LIT(KServicePLDuplicateDuplicate05, "SyncServerContentsServicePLDuplicate::InitializeDuplication() Open Error:%d");
		SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelNormal, KServicePLDuplicateDuplicate05, retState);
#endif
		return retState;
		}

	return KErrNone;
	}


/**
 *  僾儗僀儕僗僩暋惢梫媮張棟
 *
 *  @return	張棟寢壥
 **/
TInt CSmbMusicAPSyncServerContentsServicePLDuplicate::DuplicateUserPlayList()
	{
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
	TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServicePLDuplicate | EMusicAPSyncServerLocationNumber21;
	_LIT(KServicePLDuplicateRegisterUserPlayList01, "SyncServerContentsServicePLDuplicate::DuplicateUserPlayList()");
	SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelLow, KServicePLDuplicateRegisterUserPlayList01);
#endif

	//  僆儕僕僫儖僼傽僀儖柤惗惉
	MakeOriginalFileName();

	//  僾儗僀儕僗僩暋惢梫媮
	return iFunc.DuplicateUserPlayList(iRegisterInfo, *iPLList, iStatus);
	}


/**
 *  僆儕僕僫儖僼傽僀儖柤惗惉
 **/
void CSmbMusicAPSyncServerContentsServicePLDuplicate::MakeOriginalFileName()
	{
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
	TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServicePLDuplicate | EMusicAPSyncServerLocationNumber22;
	_LIT(KServicePLDuplicateMakeOriginalFileName01, "SyncServerContentsServicePLDuplicate::MakeOriginalFileName()");
	SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelLow, KServicePLDuplicateMakeOriginalFileName01);
#endif

	TTime time;
	time.HomeTime();	//  僫儞僶乕嶌惉梡

	//  MW傊搉偡僷儔儊乕僞偺弶婜壔
	iRegisterInfo.iOriginalFileName.Des().Zero();

	//  僆儕僕僫儖僾儗僀儕僗僩僼傽僀儖柤惗惉梡僼僅乕儅僢僥傿儞僌儀乕僗
	_LIT(KSmbMusicAPSyncServerOriginalPlNameBase, "PlayList%010Lu.plt");
	//  拲堄)
	//  捠偟斣崋偼僔僗僥儉帪崗(儅僀僋儘昩)傪Int64偱庢摼偟丄
	//  儈儕昩偵曄姺屻丄壓偐傜10寘暘傪巊梡偡傞丅

	TInt64	serial = time.Int64();
	serial = serial / KSmbMusicAPSyncServerContentsMakeSeriarlForOrgFileMilli;	//  棻搙傪儈儕昩儗儀儖偵偡傞
	serial = serial % KSmbMusicAPSyncServerContentsMakeSeriarlForOrgFileRange;	//  斖埻傪10寘暘偵廂傔傞

	//  僼傽僀儖柤惗惉(僼傽僀柤儀乕僗丄斣崋)
	TBuf<KSmbMusicAPSyncServerContentsOriginalFilenameMaxLength> originalFilename;
	originalFilename.Format(KSmbMusicAPSyncServerOriginalPlNameBase, serial);

#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
	logCode = EMusicAPSyncServerClassNumber_ContentsServicePLDuplicate | EMusicAPSyncServerLocationNumber23;
	_LIT(KServicePLDuplicateMakeOriginalFileName02, "SyncServerContentsServicePLDuplicate::MakeOriginalFileName() Filename:PlayList%010Lu.plt");
	SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelLowest, KServicePLDuplicateMakeOriginalFileName02, serial);
#endif

	iRegisterInfo.iOriginalFileName = originalFilename;
	}

// end of SmbMusicAPSyncServerContentsServicePLDuplicate.cpp

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

⌨️ 快捷键说明

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