📄 smbmusicapsyncservereventdispatcher.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 + -