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

📄 smbmusicapsyncservercontentsservicequeue.cpp

📁 索爱相关代码。实现功能是server。很有参考价值。代码很难弄到。symbian。
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		{	//  僉儏乕偑幚峴忬懺偱側偐偭偨応崌
		Start();
		}

	return KErrNone;
	}


/**
 *  僉儏乕偑嬻偐偳偆偐偺敾掕
 *
 *  @return 僉儏乕偺忬懺(ETrue:僉儏乕偼嬻丄EFalse:僉儏乕偼嬻偱側偄)
 **/
TBool CSmbMusicAPSyncServerContentsServiceQueue::IsEmpty() const
	{
	TBool empty(iServiceQueue.Count() == 0);

#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
	TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServiceQueue | EMusicAPSyncServerLocationNumber06;
	_LIT(KServiceQueueIsEmpty01, "SyncServerContentsServiceQueue::IsEmpty() = %d");
	SmbMusicAPSyncServerLog(iLog, logCode, ELogLevelLowest, KServiceQueueIsEmpty01, empty);
#endif

	return empty;
	}


/**
 *  僉儏乕偺懳墳偡傞僒乕價僗傪僉儍儞僙儖偡傞
 *
 *  @param[in]	aServiceFunc	僉儍儞僙儖懳徾偺僒乕價僗僼傽儞僋僔儑儞
 *
 *  @return 張棟寢壥(KErrNone:僉儍儞僙儖惉岟丄KErrNotFound:懳墳僒乕價僗偑尒偮偐傜偢)
 **/
TInt CSmbMusicAPSyncServerContentsServiceQueue::CancelService(TSmbMusicAPSyncServerFunction aServiceFunc)
	{
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
	TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServiceQueue | EMusicAPSyncServerLocationNumber07;
	_LIT(KServiceQueueCancelService01, "SyncServerContentsServiceQueue::CancelService1(%d)");
	SmbMusicAPSyncServerLog(iLog, logCode, ELogLevelLow, KServiceQueueCancelService01, aServiceFunc);
#endif

	TInt count(iServiceQueue.Count());
	CSmbMusicAPSyncServerContentsServiceBase* service(NULL);
	for(TInt i = 0; i < count; i++)
		{
		service = iServiceQueue[i];
		if (service -> CheckCancel(aServiceFunc) != EFalse)
			{	//  僉儏乕偺拞偵僉儍儞僙儖梫媮偵懳墳偡傞僒乕價僗偑偁偭偨応崌
			service -> CancelBeforeStart();
			iServiceQueue.Remove(i);
			delete service;

			return KErrNone;	//  僉儍儞僙儖惉岟
			}
		}

#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
	logCode = EMusicAPSyncServerClassNumber_ContentsServiceQueue | EMusicAPSyncServerLocationNumber08;
	_LIT(KServiceQueueCancelService02, "SyncServerContentsServiceQueue::CancelService1 Service not found");
	SmbMusicAPSyncServerLog(iLog, logCode, ELogLevelNormal, KServiceQueueCancelService02);
#endif

	return KErrNotFound;	//  懳墳偡傞僒乕價僗偑側偗傟偽NotFound傪曉偡丅
	}


//  ADD-S  [iKeeper(TRK):10587] 僉儍儞僙儖弴偺僨僢僪儘僢僋栤戣懳張
/**
 *  僉儏乕偺懳墳偡傞僒乕價僗傪僉儍儞僙儖偡傞
 *
 *  @param[in]	aRequestId	僉儍儞僙儖懳徾偺僒乕價僗梫媮ID
 *  @param[in]	aSession	僉儍儞僙儖懳徾偺僒乕價僗偺僙僢僔儑儞
 *
 *  @return 張棟寢壥(KErrNone:僉儍儞僙儖惉岟丄KErrNotFound:懳墳僒乕價僗偑尒偮偐傜偢)
 **/
TInt CSmbMusicAPSyncServerContentsServiceQueue::CancelService(TInt aRequestId, CSession2* aSession)
	{
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
	TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServiceQueue | EMusicAPSyncServerLocationNumber09;
	_LIT(KServiceQueueCancelService01, "SyncServerContentsServiceQueue::CancelService2(0x%04x, 0x%08x)");
	SmbMusicAPSyncServerLog(iLog, logCode, ELogLevelLow, KServiceQueueCancelService01, aRequestId, aSession);
#endif

	TInt count(iServiceQueue.Count());
	CSmbMusicAPSyncServerContentsServiceBase* service(NULL);
	for(TInt i = 0; i < count; i++)
		{
		service = iServiceQueue[i];
		if (service -> CheckCancel(aRequestId, aSession) != EFalse)
			{	//  僉儏乕偺拞偵僉儍儞僙儖梫媮偵懳墳偡傞僒乕價僗偑偁偭偨応崌
			service -> CancelBeforeStart();
			iServiceQueue.Remove(i);
			delete service;

			return KErrNone;	//  僉儍儞僙儖惉岟
			}
		}

#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
	logCode = EMusicAPSyncServerClassNumber_ContentsServiceQueue | EMusicAPSyncServerLocationNumber10;
	_LIT(KServiceQueueCancelService02, "SyncServerContentsServiceQueue::CancelService2 Service not found");
	SmbMusicAPSyncServerLog(iLog, logCode, ELogLevelNormal, KServiceQueueCancelService02);
#endif
	return KErrNotFound;	//  懳墳偡傞僒乕價僗偑側偗傟偽NotFound傪曉偡丅
	}
//  ADD-E  [iKeeper(TRK):10587] 僉儍儞僙儖弴偺僨僢僪儘僢僋栤戣懳張


/**
 *  僒乕價僗姰椆捠抦
 *
 *  @param[in]	aReason	姰椆忬懺(徣棯帪:KErrNone)
 **/
void CSmbMusicAPSyncServerContentsServiceQueue::ServiceComplete(TInt aReason/*=KErrNone*/)
	{
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
	TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServiceQueue | EMusicAPSyncServerLocationNumber11;
	_LIT(KServiceQueueServiceComplete01, "SyncServerContentsServiceQueue::ServiceComplete(%d)");
	SmbMusicAPSyncServerLog(iLog, logCode, ELogLevelLow, KServiceQueueServiceComplete01, aReason);
#endif

//  MODIFY-S  [iKeeper(TRK):7945] 僒乕價僗幚峴拞偵ServiceAllEnd傪庴偗偰僼儕乕僘偡傞栤戣偺懳張
	if (iStatus == KRequestPending)
		{
		TRequestStatus* status = &iStatus;
		User::RequestComplete(status, aReason);
		}
//  MODIFY-E  [iKeeper(TRK):7945] 僒乕價僗幚峴拞偵ServiceAllEnd傪庴偗偰僼儕乕僘偡傞栤戣偺懳張
	}


/**
 *  僒乕價僗慡廔椆
 **/
void CSmbMusicAPSyncServerContentsServiceQueue::ServiceAllEnd()
	{
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
	TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServiceQueue | EMusicAPSyncServerLocationNumber12;
	_LIT(KServiceQueueServiceAllEnd01, "SyncServerContentsServiceQueue::ServiceAllEnd() cur:0x%08x que:%d");
	SmbMusicAPSyncServerLog(iLog, logCode, ELogLevelLow, KServiceQueueServiceAllEnd01, CurrentService(), iServiceQueue.Count());
#endif

//  MODIFY-S  [D_82400013911] 僉儍儞僙儖晄壜帪偺僉儍儞僙儖張棟楻傟栤戣偺懳墳
//  MODIFY-S  [D_82400004466][D_82400004710] 僉儍儞僙儖晄壜側僒乕價僗偵懳墳
	TBool disableCancel(EFalse);	//  僉儍儞僙儖晄壜僒乕價僗偺桳柍
	TBool currentNormal(EFalse);	//  幚峴拞僒乕價僗偑捠忢僒乕價僗偐偳偆偐

	if (CurrentService() != NULL)
		{	//  尰嵼幚峴拞偺僒乕價僗偑懚嵼偡傞応崌
		if (CurrentService() -> DisableCancelService() != EFalse)
			{	//  尰嵼幚峴拞偺僒乕價僗偑僉儍儞僙儖晄壜僒乕價僗偺応崌
			//  僉儍儞僙儖晄壜僼儔僌傪僙僢僩
			disableCancel = ETrue;
			}
		else
			{	//  尰嵼幚峴拞偺僒乕價僗偑僉儍儞僙儖壜擻僒乕價僗偺応崌
			//  僉儍儞僙儖張棟傪幚峴
			CurrentService() -> CancelService();
			delete iCurrentService;
			iCurrentService = NULL;
			currentNormal = ETrue;	//  幚峴拞僒乕價僗偑懚嵼偟捠忢僒乕價僗
			}
		}

	//  僒乕價僗僉儏乕偺僒乕價僗僉儍儞僙儖
	CSmbMusicAPSyncServerContentsServiceBase* service(NULL);
	for(TInt i = iServiceQueue.Count() - 1; i >= 0; i--)
		{
		service = iServiceQueue[i];
		if (service -> DisableCancelService() != EFalse)
			{	//  僉儍儞僙儖晄壜僒乕價僗偺応崌
			//  僉儍儞僙儖晄壜僼儔僌傪僙僢僩
			disableCancel = ETrue;
			}
		else
			{	//  僉儍儞僙儖壜擻僒乕價僗偺応崌
			//  僉儍儞僙儖張棟傪幚峴
			iServiceQueue.Remove(i);
			service -> CancelService();
			delete service;
			}
		}

	if ((currentNormal != EFalse) && (disableCancel != EFalse))
		{	//  幚峴拞僒乕價僗偑偁傝捠忢僒乕價僗偱丄偝傜偵僉儏乕偵僉儍儞僙儖晄壜桳
		//  僉儏乕偺張棟傪宲懕偡傞
		ServiceComplete(KErrCompletion);
		}
	else if (disableCancel == EFalse)
		{	//  僉儍儞僙儖晄壜僒乕價僗偑懚嵼偟側偄応崌
		//  AO偺僉儍儞僙儖傪峴偆
		Cancel();
		}
	else
		{	//  幚峴拞僒乕價僗偑僉儍儞僙儖晄壜僒乕價僗偺応崌
		//  張棟傪宲懕偡傞
		TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServiceQueue | EMusicAPSyncServerLocationNumber13;
		_LIT(KServiceQueueServiceAllEnd02, "SyncServerContentsServiceQueue::ServiceAllEnd() DisableCancelServices(C:%d, Q:%d)");
		SmbMusicAPSyncServerLog(iLog, logCode, ELogLevelLow, KServiceQueueServiceAllEnd02,
								(CurrentService() != NULL), iServiceQueue.Count());
		}
//  MODIFY-E  [D_82400004466][D_82400004710] 僉儍儞僙儖晄壜側僒乕價僗偵懳墳
//  MODIFY-E  [D_82400013911] 僉儍儞僙儖晄壜帪偺僉儍儞僙儖張棟楻傟栤戣偺懳墳
	}


/**
 *  僉儏乕張棟奐巒
 **/
void CSmbMusicAPSyncServerContentsServiceQueue::Start()
	{
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
	TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServiceQueue | EMusicAPSyncServerLocationNumber14;
	_LIT(KServiceQueueStart01, "SyncServerContentsServiceQueue::Start()");
	SmbMusicAPSyncServerLog(iLog, logCode, ELogLevelLow, KServiceQueueStart01);
#endif

	iStatus = KRequestPending;
	SetActive();

	if (iCurrentService == NULL)
		{	//  尰嵼幚峴拞偺僒乕價僗偑側偄応崌
		ServiceComplete(KErrNone);
		}
	}


// end of SmbMusicAPSyncServerContentsServiceQueue.cpp

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

⌨️ 快捷键说明

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