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

📄 smbmusicapsyncservereventdispatcher.cpp

📁 索爱相关代码。实现功能是server。很有参考价值。代码很难弄到。symbian。
💻 CPP
字号:
/* Copyright (C) 2006 Sony Ericsson Mobile Communications Japan, Inc. */
/*--------------------------------------------------------------------*/
// FileName:
//	SmbMusicAPSyncServerEventDispatcher.cpp
//
// Description:
//	PTX810 Music傾僾儕 摨婜僒乕僶 傾僾儕摨婜僋儔僗
/*--------------------------------------------------------------------*/
//曄峏棜楌
//擔晅			|曄峏幰			|撪梕
//--------------+---------------+--------------------------------------
//2006/05/31	|暯壀			| 怴婯嶌惉
//2006/07/25	|K3悪杮			| ConstructL撪偺Leave偱儊儌儕儕乕僋偡傞応崌偺栤戣偺廋惓
//				|				| ReceiveMessage撪偱Leave娭悢傪屇傫偱偄偨偺偱TRAP張棟捛壛
//				|				| CommandL偱Leave偟偨応崌偺張棟傪捛壛
//2006/07/27	|K3悪杮			| Leave帪偵AccessViolation偑敪惗偟偰偄偨栤戣偺廋惓
//2006/08/15	|K3悪杮			| [iKeeper(TRK):6523]AppExit帪偵PANIC偡傞栤戣偺懳墳
//2006/09/29	|K3悪杮			| 儘僌廋惓


#ifndef __SMBMUSICAPSYNCSERVEREVENTDISPATCHER_H__
#include "SmbMusicAPSyncServerEventDispatcher.h"
#endif

#ifndef __SMBMUSICAPSYNCSERVERAPPCONTROLLER_H__
#include "SmbMusicAPSyncServerAppController.h"
#endif

#ifndef __SMBMUSICAPSYNCSERVERCONTENTSCONTROLLER_H__
#include "SmbMusicAPSyncServerContentsController.h"
#endif	//  __SMBMUSICAPSYNCSERVERCONTENTSCONTROLLER_H__

#ifndef __SMBMUSICAPSYNCSERVERPLAYERCONTROLLER_H__
#include "SmbMusicAPSyncServerPlayerController.h"
#endif

#ifndef __SMBMUSICAPSYNCSERVEREXTRACONTROLLER_H__
#include "SmbMusicAPSyncServerExtraController.h"
#endif

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


USING_NAMESPACE_SEMCJ

/**
 * 僐儞僗僩儔僋僞
 * @param [in]	aLog		儘僌僒乕僶僙僢僔儑儞偺嶲徠
 * @return
 **/
CSmbMusicAPSyncServerEventDispatcher::CSmbMusicAPSyncServerEventDispatcher(DCM_NAMESPACE::RLog& aLog):
iLog(aLog)
	{
	}

/**
 * 僨僗僩儔僋僞
 * @param [in]	aLog	側偟
 * @return
 **/
CSmbMusicAPSyncServerEventDispatcher::~CSmbMusicAPSyncServerEventDispatcher()
	{
	//惗惉偟偨僐儞僩儘乕儔傪嶍彍偡傞
	TInt cnt = iController.Count();
	CSmbMusicAPSyncServerControllerBase* p = NULL;
	for(TInt i = 0; i < cnt; i++)
		{
		p = iController[0];
		delete p;
		iController.Remove(0);
		}
	iController.Close();
	}

/**
 * 儊僢僙乕僕庴怣娭悢
 * @param [in]	aMessage	儊僢僙乕僕
 * @return
 **/
void CSmbMusicAPSyncServerEventDispatcher::ReceiveMessage(const RMessage2& aMsg)
	{

	TInt cnt = iController.Count();
	TBool msg = ETrue;

	//庴怣偟偨僀儀儞僩傪弌椡
	TInt log = EMusicAPSyncServerClassNumber03 | EMusicAPSyncServerLocationNumber00;
	_LIT(KEventDispatcher01, "EventDispatcher::ReceiveMessage(0x%08x)");
	SmbMusicAPSyncServerLog(iLog, log, ELogLevelLowest, KEventDispatcher01, aMsg.Function());

	for(TInt i = 0; i < cnt; i++)
		{
		msg = iController[i]->IsActiveSession(aMsg);
		//僒乕僶偵傾僋僙僗尃偑偁傞偐傪栤偄崌偣傞
		if(EFalse != msg)
			{
			//僒乕僶傊偺傾僋僙僗尃偑側偄偺偱嫅斲
//			aMsg.Complete(KErrPermissionDenied);
//			return;
			//儖乕僾傪敳偗傑偡
			break;
			}
		}

	if(EFalse == msg)
		{
		//僒乕僶傊偺傾僋僙僗尃偑側偄偺偱僀儀儞僩傪嫅斲
		aMsg.Complete(KErrPermissionDenied);
		return;
		}

	//僀儀儞僩傪攝怣偡傞
	msg = EFalse;
	TRAPD(error,
		for(TInt i = 0; i < cnt; i++)
			{
			msg = iController[i]->ReceiveMessageL(aMsg);
			if(EFalse != msg)
				{
				//僀儀儞僩傪徚壔偟偨傜儖乕僾傪敳偗傞
				break;
				}
			}
		);
	if (error != KErrNone)
		{	//  僐儞僩儘乕儔偺RecieveMessageL偱Leave偟偨応崌
		TInt log = EMusicAPSyncServerClassNumber03 | EMusicAPSyncServerLocationNumber01;
		_LIT(KEventDispatcher02, "EventDispatcher::ReceiveMessage ReceiveMessageL(0x%08x) is Leave:%d");
		SmbMusicAPSyncServerLog(iLog, log, ELogLevelNormal, KEventDispatcher02, aMsg.Function(), error);

		aMsg.Complete(error);
		return;
		}
	if (msg != EFalse)
		{	//  僀儀儞僩徚旓偟偰偨傜偙偙偱張棟廔椆
		return;
		}

	//僒乕僶傊偺傾僋僙僗尃偑側偄偺偱嫅斲
	aMsg.Complete(KErrPermissionDenied);
	}

/**
 *戞2僼僃乕僘僐儞僗僩儔僋僞
 * @param [in]	aLog	側偟
 * @return
 **/
void CSmbMusicAPSyncServerEventDispatcher::ConstructL(CSmbMusicAPSyncServerModel& aModel)
	{
	//傾僾儕摨婜宯僐儞僩儘乕儔惗惉
	CSmbMusicAPSyncServerAppController* appctrl = new(ELeave)CSmbMusicAPSyncServerAppController(iLog);
	CleanupStack::PushL(appctrl);
	appctrl->ConstructL(aModel);
	iController.AppendL(appctrl);
	CleanupStack::Pop(appctrl);

//  MODIFY-S  [iKeeper(TRK):6523]AppExit帪偵PANIC偡傞栤戣偺懳墳
//  惗惉丒摦揑攝楍傊偺捛壛偺弴彉傪曄峏
	//嵞惗宯僐儞僩儘乕儔惗惉
	CSmbMusicAPSyncServerPlayerController* playerctrl = new(ELeave)CSmbMusicAPSyncServerPlayerController(iLog);
	CleanupStack::PushL(playerctrl);
	playerctrl->ConstructL(aModel);
	iController.AppendL(playerctrl);
	CleanupStack::Pop(playerctrl);

	//僐儞僥儞僣宯僐儞僩儘乕儔惗惉
	CSmbMusicAPSyncServerContentsController* contentsctrl = CSmbMusicAPSyncServerContentsController::NewL(iLog, aModel);
	CleanupStack::PushL(contentsctrl);
	iController.AppendL(contentsctrl);
	CleanupStack::Pop(contentsctrl);
//  MODIFY-E  [iKeeper(TRK):6523]AppExit帪偵PANIC偡傞栤戣偺懳墳

	//捛壛僀儀儞僩宯僐儞僩儘乕儔惗惉
	CSmbMusicAPSyncServerExtraController* extractrl = new(ELeave)CSmbMusicAPSyncServerExtraController(iLog);
	CleanupStack::PushL(extractrl);
	extractrl->ConstructL(aModel);
	iController.AppendL(extractrl);
	CleanupStack::Pop(extractrl);
	}

/**
 * 僙僢僔儑儞愙懕捠抦
 * @param [in]	aSession	僙僢僔儑儞
 * @return
 **/
void CSmbMusicAPSyncServerEventDispatcher::Connect(CSession2& aSession)
	{
	TInt cnt = iController.Count();
	for (TInt i = 0; i < cnt; i++)
		{
		iController[i]->Connect(aSession);
		}
	}

/**
 * 僙僢僔儑儞愗抐捠抦
 * @param [in]	aSession	僙僢僔儑儞
 * @return
 **/
void CSmbMusicAPSyncServerEventDispatcher::DisConnect(CSession2& aSession)
	{
	TInt cnt = iController.Count();
	for (TInt i = 0; i < cnt; i++)
		{
		iController[i]->DisConnect(aSession);
		}
	}

/**
 * 撪晹僐儅儞僪傪幚峴偡傞
 * @param [in,out]	aCommand	撪晹僐儅儞僪僋儔僗
 * @return
 **/
void CSmbMusicAPSyncServerEventDispatcher::CommandL(TSmbMusicAPSyncServerInternalCommandPkg aCommandPkg)
	{
	//庴怣偟偨僐儅儞僪傪弌椡
	TInt log = EMusicAPSyncServerClassNumber03 | EMusicAPSyncServerLocationNumber02;
	_LIT(KEventDispatcher03, "EventDispatcher::CommandL[0x%04x]");
	SmbMusicAPSyncServerLog(iLog, log, ELogLevelLowest, KEventDispatcher03, aCommandPkg.iCommand);

	TInt cnt = iController.Count();
	TRAPD(error,
		for (TInt i = 0; i < cnt; i++)
			{
			iController[i]->CommandL(aCommandPkg);
			}
		);
	if (error != KErrNone)
		{	//  僐儞僩儘乕儔偺CommandL偱Leave偟偨応崌
		TInt log = EMusicAPSyncServerClassNumber03 | EMusicAPSyncServerLocationNumber03;
		_LIT(KEventDispatcher04, "EventDispatcher::CommandL[0x%04x] CommandL is Leave:%d");
		SmbMusicAPSyncServerLog(iLog, log, ELogLevelNormal, KEventDispatcher04, aCommandPkg.iCommand, error);
		}
	}


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

⌨️ 快捷键说明

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