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

📄 smbmusicapsyncservercontentsservicegetsongid.cpp

📁 索爱相关代码。实现功能是server。很有参考价值。代码很难弄到。symbian。
💻 CPP
字号:
/* Copyright (C) 2006 Sony Ericsson Mobile Communications Japan, Inc. */
/*--------------------------------------------------------------------*/
// FileName:
//	SmbMusicAPSyncServerContentsServiceGetSongID.cpp
//
// Description:
//	PTX810 Music傾僾儕 摨婜僒乕僶 僐儞僥儞僣僋儔僗
/*--------------------------------------------------------------------*/
//曄峏棜楌
//擔晅			|曄峏幰			|撪梕
//--------------+---------------+--------------------------------------
//2006/06/16	|SDNA 壀嶳		|怴婯嶌惉


#ifndef __SMBMUSICAPSYNCSERVERCONTENTSSERVICEGETSONGID_H__
#include "SmbMusicAPSyncServerContentsServiceGetSongID.h"
#endif

#ifndef __SMBMUSICAPSYNCSERVERUTIL_H__
#include "SmbMusicAPSyncServerUtil.h"
#endif

#ifndef __SMBMUSICAPSYNCSERVERCONTENTSLIST_H__
#include "SmbMusicAPSyncServerContentsList.h"
#endif

#ifndef __SMBMUSICAPSYNCSERVERCONTENTSITEM_H__
#include "SmbMusicAPSyncServerContentsItem.h"
#endif

USING_NAMESPACE_SEMCJ


/**
 僐儞僗僩儔僋僞
 * @param [in]		aRlog				RLog偺嶲徠
 * @param [in]		aModel				儌僨儖僋儔僗偺嶲徠
 * @param [in]		aObserver			僒乕價僗姰椆捠抦愭僋儔僗偺嶲徠
 * @param [in]		aFunc				僐儞僥儞僣僼傽儞僋儔僗偺嶲徠
 * @param [in]		aManagerInterface	奺儅僱乕僕儍傪娗棟偡傞僋儔僗偺嶲徠
 * @param [in]		aScreenData			夋柺慗堏僨乕僞娗棟僋儔僗偺嶲徠
 * @param [in,out]	aRMessage			RMessage偺億僀儞僞
 * @return								側偟
 */
CSmbMusicAPSyncServerContentsServiceGetSongID::CSmbMusicAPSyncServerContentsServiceGetSongID(DCM_NAMESPACE::RLog&								aRlog,
																							 CSmbMusicAPSyncServerModel& 						aModel,
																							 MSmbMusicAPSyncServerContentsAsyncObserver& 		aObserver,
																							 CSmbMusicAPSyncServerContentsFunc& 				aFunc,
																							 MSmbMusicAPSyncServerContentsManagerInterface& 	aManagerInterface,
																							 CSmbMusicAPSyncServerContentsScreenTraceManager&	aScreenData,
																							 const RMessage2&									aRMessage)
	:CSmbMusicAPSyncServerContentsServiceBase(aRlog,aModel,aObserver,aFunc,aManagerInterface,aScreenData,aRMessage),
	iServiceState(ESmbMusicAPSyncServerContentsServiceGetSongIDState_Init)
	{
	}


/**
 僨僗僩儔僋僞
 * @param	側偟
 * @return	側偟
 */
CSmbMusicAPSyncServerContentsServiceGetSongID::~CSmbMusicAPSyncServerContentsServiceGetSongID()
	{
	if (IsActive() != EFalse)
		{
		CancelService();
		}
	// 擮偺偨傔丄僉儍儞僙儖偵偰Complete偡傞
	CompleteErr(KErrCancel);

	delete iTempItemArray;
	iTempItemArray = 0;
	}


/**
 僒乕價僗傪奐巒偡傞
 * @param	側偟
 * @return	僒乕價僗張棟忬懺
 */
TSmbMusicAPSyncServerContentsServiceState CSmbMusicAPSyncServerContentsServiceGetSongID::StartServiceL()
	{
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
	_LIT(KContentsServiceGetSongID00, "SyncServerContentsServiceGetSongID::StartServiceL() ");
	SmbMusicAPSyncServerLog(iRLog,
							(EMusicAPSyncServerClassNumber_ContentsServiceGetSongID|EMusicAPSyncServerLocationNumber00),
							ELogLevelLowest,
							KContentsServiceGetSongID00);
#endif
	if(ESmbMusicAPSyncServerContentsServiceGetSongIDState_Init == iServiceState)
		{
		// 僷儔儊乕僞傪撉傒崬傓
		if(EFalse != LoadParam())
			{
			CSmbMusicAPSyncServerContentsList* list = iScreenData.GetList(iParamListHandle);

			if(list)
				{
				iList = list;

				// 傾僀僥儉攝楍傪惗惉偡傞
				iTempItemArray = CSmbMusicMWLibItemArray::NewL(1);
				// 傾僀僥儉傪庢摼偡傞
				TInt result = iList->CreateNewItem(*iTempItemArray, iParamIndex, 1, iStatus);

				if(KErrNone == result)
					{
					// 僒乕價僗僋儔僗傪傾僋僥傿僽偵偡傞
					Start();

					// 傾僀僥儉庢摼懸偪忬懺偵偡傞
					iServiceState = ESmbMusicAPSyncServerContentsServiceGetSongIDState_WaitItem;

					return ESmbMusicAPSyncServerContetnsServiceStateContinue;
					}
				else
					{
					_LIT(KContentsServiceGetSongID01, "SyncServerContentsServiceGetSongID::StartServiceL() CreateNewItem() Err %d");
					SmbMusicAPSyncServerLog(iRLog,
											(EMusicAPSyncServerClassNumber_ContentsServiceGetSongID|EMusicAPSyncServerLocationNumber01),
											ELogLevelHigh,
											KContentsServiceGetSongID01,
											result);

					// 儔僀僽儔儕MW僄儔乕偵偰姰椆偡傞
					CompleteErr(KErrNotReady);
					return ESmbMusicAPSyncServerContetnsServiceStateErr;
					}
				}
			else
				{
				_LIT(KContentsServiceGetSongID02, "SyncServerContentsServiceGetSongID::StartServiceL() List Not Found Handle:%d");
				SmbMusicAPSyncServerLog(iRLog,
										(EMusicAPSyncServerClassNumber_ContentsServiceGetSongID|EMusicAPSyncServerLocationNumber02),
										ELogLevelHigh,
										KContentsServiceGetSongID02,
										iParamListHandle);

				// 僷儔儊乕僞僄儔乕偵偰姰椆偡傞
				CompleteErr(KErrArgument);
				return ESmbMusicAPSyncServerContetnsServiceStateErr;
				}
			}
			else
			{
			// 僷儔儊乕僞僄儔乕偵偰姰椆偡傞
			CompleteErr(KErrArgument);
			return ESmbMusicAPSyncServerContetnsServiceStateErr;
			}
		}
	else
		{
		_LIT(KContentsServiceGetSongID03, "SyncServerContentsServiceGetSongID::StartServiceL() Invalid State %d");
		SmbMusicAPSyncServerLog(iRLog,
								(EMusicAPSyncServerClassNumber_ContentsServiceGetSongID|EMusicAPSyncServerLocationNumber03),
								ELogLevelHigh,
								KContentsServiceGetSongID03,
								iServiceState);

		// 僒乕價僗傪僄儔乕偱姰椆偡傞
		CompleteErr();
		return ESmbMusicAPSyncServerContetnsServiceStateErr;
		}
	}


/**
 旕摨婜墳摎偐傜僒乕價僗傪宲懕偡傞
 * @param	側偟
 * @return	僒乕價僗張棟忬懺
 */
TSmbMusicAPSyncServerContentsServiceState CSmbMusicAPSyncServerContentsServiceGetSongID::ContinueServiceL()
	{
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
	_LIT(KContentsServiceGetSongID04, "SyncServerContentsServiceGetSongID::ContinueServiceL() state:%d");
	SmbMusicAPSyncServerLog(iRLog,
							(EMusicAPSyncServerClassNumber_ContentsServiceGetSongID|EMusicAPSyncServerLocationNumber04),
							ELogLevelLowest,
							KContentsServiceGetSongID04,
							iServiceState);
#endif
	if(ESmbMusicAPSyncServerContentsServiceGetSongIDState_WaitItem == iServiceState)
		{

		// 傾僀僥儉傪庢摼偡傞
		CSmbMusicMWLibMusicItem* item = iTempItemArray->GetMusicItemL(0);

		if(item)
			{
			// 傾僀僥儉偑嬋傾僀僥儉偺応崌
			if(item->ItemType() == ESmbMusicMWLibItemTypeSong)
				{

				// 嬋傾僀僥儉僋儔僗偵僉儍僗僩偟丄嬋ID傪庢摼偡傞
				CSmbMusicMWLibSongItem* songItem = static_cast<CSmbMusicMWLibSongItem*>(item);
				TUint64 songID;
				TInt	result = songItem->SongId(songID);
				delete item;
				item = 0;

				if(KErrNone == result)
					{
					Complete(songID);
					return ESmbMusicAPSyncServerContetnsServiceStateEnd;
					}
				else
					{
					_LIT(KContentsServiceGetSongID05, "SyncServerContentsServiceGetSongID::ContinueServiceL() SongId() Err %d");
					SmbMusicAPSyncServerLog(iRLog,
											(EMusicAPSyncServerClassNumber_ContentsServiceGetSongID|EMusicAPSyncServerLocationNumber05),
											ELogLevelHigh,
											KContentsServiceGetSongID05,
											result);

					// 儔僀僽儔儕MW僄儔乕偵偰姰椆偡傞
					CompleteErr(KErrNotReady);
					return ESmbMusicAPSyncServerContetnsServiceStateEnd;
					}
				}
			else
				{
				_LIT(KContentsServiceGetSongID06, "SyncServerContentsServiceGetSongID::ContinueServiceL() ItemType is not Song  Type:%d");
				SmbMusicAPSyncServerLog(iRLog,
										(EMusicAPSyncServerClassNumber_ContentsServiceGetSongID|EMusicAPSyncServerLocationNumber06),
										ELogLevelHigh,
										KContentsServiceGetSongID06,
										item->ItemType());
				delete item;
				item = 0;

				// 儔僀僽儔儕MW僄儔乕偵偰姰椆偡傞
				CompleteErr(KErrNotReady);
				return ESmbMusicAPSyncServerContetnsServiceStateEnd;
				}
			}
		else
			{
			_LIT(KContentsServiceGetSongID07, "SyncServerContentsServiceGetSongID::ContinueServiceL() GetMusicItemL() Err");
			SmbMusicAPSyncServerLog(iRLog,
									(EMusicAPSyncServerClassNumber_ContentsServiceGetSongID|EMusicAPSyncServerLocationNumber07),
									ELogLevelHigh,
									KContentsServiceGetSongID07);

			// 僒乕價僗傪僄儔乕偱姰椆偡傞
			CompleteErr();
			return ESmbMusicAPSyncServerContetnsServiceStateErr;
			}
		}
	else
		{
		_LIT(KContentsServiceGetSongID08, "SyncServerContentsServiceGetSongID::ContinueServiceL() Invalid State %d");
		SmbMusicAPSyncServerLog(iRLog,
								(EMusicAPSyncServerClassNumber_ContentsServiceGetSongID|EMusicAPSyncServerLocationNumber08),
								ELogLevelHigh,
								KContentsServiceGetSongID08,
								iServiceState);

		// 僒乕價僗傪僄儔乕偱姰椆偡傞
		CompleteErr();
		return ESmbMusicAPSyncServerContetnsServiceStateErr;
		}
	}

/**
 僒乕價僗偺僉儍儞僙儖張棟傪峴偆
 * @param	側偟
 * @return	側偟
 */
void CSmbMusicAPSyncServerContentsServiceGetSongID::CancelService()
	{
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
	_LIT(KContentsServiceGetSongID09, "SyncServerContentsServiceGetSongID::CancelService() state:%d");
	SmbMusicAPSyncServerLog(iRLog,
							(EMusicAPSyncServerClassNumber_ContentsServiceGetSongID|EMusicAPSyncServerLocationNumber09),
							ELogLevelLowest,
							KContentsServiceGetSongID09,
							iServiceState);
#endif
	if(ESmbMusicAPSyncServerContentsServiceGetSongIDState_WaitItem == iServiceState)
		{
		iList->CancelCreateNewItem();
		CompleteErr();
		}

	Cancel();
	}


/**
 旕摨婜墳摎僄儔乕偺張棟傪峴偆
 * @param [in] aError	僄儔乕僐乕僪
 * @return				僒乕價僗張棟忬懺
 */
TSmbMusicAPSyncServerContentsServiceState CSmbMusicAPSyncServerContentsServiceGetSongID::ServiceErr(TInt aError)
	{
	_LIT(KContentsServiceGetSongID10, "SyncServerContentsServiceGetSongID::ServiceErr() Called %d");
	SmbMusicAPSyncServerLog(iRLog,
							(EMusicAPSyncServerClassNumber_ContentsServiceGetSongID|EMusicAPSyncServerLocationNumber10),
							ELogLevelHigh,
							KContentsServiceGetSongID10,
							aError);

	// 僒乕價僗傪僄儔乕偱姰椆偡傞
	CompleteErr(aError);

	return ESmbMusicAPSyncServerContetnsServiceStateErr;
	}


/**
 僷儔儊乕僞傪撉傒崬傓
 * @param	側偟
 * @return
 */
TBool CSmbMusicAPSyncServerContentsServiceGetSongID::LoadParam()
	{
	// 僷儔儊乕僞僷僢働乕僕傪撉傒崬傓
	TSmbMusicAPSyncServerContentsReqPkg			reqPkg;
	TPckg<TSmbMusicAPSyncServerContentsReqPkg>	pkg(reqPkg);

	TInt err = iRMessage.Read(0,pkg);
	if (KErrNone == err)
		{

#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
		_LIT(KContentsServiceGetSongID11, "SyncServerContentsServiceGetSongID::LoadParam() ListHandle:0x%08x Index:%d");
		SmbMusicAPSyncServerLog(iRLog,
								(EMusicAPSyncServerClassNumber_ContentsServiceGetSongID|EMusicAPSyncServerLocationNumber11),
								ELogLevelLowest,
								KContentsServiceGetSongID11,
								reqPkg.iData.iGetSongID.iItems.iListHandle,
								reqPkg.iData.iGetSongID.iItems.iIndex);
#endif

		iParamListHandle = reqPkg.iData.iGetSongID.iItems.iListHandle;		// 儕僗僩僴儞僪儖乮RMessage傛傝庢摼乯
		// 儕僗僩僴儞僪儖偺僷儔儊乕僞僠僃僢僋偼偟側偄

		iParamIndex		 = reqPkg.iData.iGetSongID.iItems.iIndex;			// 僀儞僨僢僋僗乮RMessage傛傝庢摼乯
		if(0 <= iParamIndex)
			{
			iParamIndex+=1;				// 乮MWLib偱偼Index偑1乣偺偨傔丄0乣偐傜1乣偵曄姺偡傞乯
			return ETrue;
			}
		else
			{
			_LIT(KContentsServiceGetSongID12, "SyncServerContentsServiceGetSongID::LoadParam() Invalid Index %d");
			SmbMusicAPSyncServerLog(iRLog,
									(EMusicAPSyncServerClassNumber_ContentsServiceGetSongID|EMusicAPSyncServerLocationNumber12),
									ELogLevelHigh,
									KContentsServiceGetSongID12,
									iParamIndex);

			return EFalse;
			}
		}
	else
		{
		_LIT(KContentsServiceGetSongID13, "SyncServerContentsServiceGetSongID::LoadParam() Read() Err %d");
		SmbMusicAPSyncServerLog(iRLog,
								(EMusicAPSyncServerClassNumber_ContentsServiceGetSongID|EMusicAPSyncServerLocationNumber13),
								ELogLevelHigh,
								KContentsServiceGetSongID13,
								err);
		return EFalse;
		}
	}


/**
 僒乕價僗傪惓忢偵姰椆偡傞
 * @param [in] aSongId	嬋ID
 * @return	側偟
 */
void CSmbMusicAPSyncServerContentsServiceGetSongID::Complete(TUint64 aSongId)
	{

	if(ESmbMusicAPSyncServerContentsServiceGetSongIDState_End != iServiceState)
		{
		MessageComplete(aSongId);
		iServiceState = ESmbMusicAPSyncServerContentsServiceGetSongIDState_End;
		}
	else
		{
		_LIT(KContentsServiceGetSongID14, "SyncServerContentsServiceGetSongID::Complete() Invalid State %d");
		SmbMusicAPSyncServerLog(iRLog,
								(EMusicAPSyncServerClassNumber_ContentsServiceGetSongID|EMusicAPSyncServerLocationNumber14),
								ELogLevelHigh,
								KContentsServiceGetSongID14,
								iServiceState);
		}
	}


/**
 僒乕價僗傪僄儔乕偱姰椆偡傞
 * @param [in] aResult	僒乕價僗廔椆帪偺寢壥
 * @return	側偟
 */
void CSmbMusicAPSyncServerContentsServiceGetSongID::CompleteErr(TInt aResult)
	{

	if(ESmbMusicAPSyncServerContentsServiceGetSongIDState_End != iServiceState)
		{

		if(KErrNone == aResult)
			{
			_LIT(KContentsServiceGetSongID15, "SyncServerContentsServiceGetSongID::CompleteErr() ErrCode Is KErrNone");
			SmbMusicAPSyncServerLog(iRLog,
									(EMusicAPSyncServerClassNumber_ContentsServiceGetSongID|EMusicAPSyncServerLocationNumber15),
									ELogLevelHigh,
									KContentsServiceGetSongID15);

			MessageComplete(KErrServiceFailure);
			}
		else
			{
			MessageComplete(aResult);
			}

		iServiceState = ESmbMusicAPSyncServerContentsServiceGetSongIDState_End;
		}
	else
		{
		_LIT(KContentsServiceGetSongID16, "SyncServerContentsServiceGetSongID::CompleteErr() Invalid State %d");
		SmbMusicAPSyncServerLog(iRLog,
								(EMusicAPSyncServerClassNumber_ContentsServiceGetSongID|EMusicAPSyncServerLocationNumber16),
								ELogLevelHigh,
								KContentsServiceGetSongID16,
								iServiceState);
		}
	}


// end of SmbMusicAPSyncServerContentsServiceGetSongID.cpp
/* Copyright (C) 2006 Sony Ericsson Mobile Communications Japan, Inc. */

⌨️ 快捷键说明

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