📄 smbmusicapsyncserverextrafunc.cpp
字号:
/* Copyright (C) 2006 Sony Ericsson Mobile Communications Japan, Inc. */
/*--------------------------------------------------------------------*/
// FileName:
// SmbMusicAPSyncServerAppFunc.cpp
//
// Description:
// PTX810 Music傾僾儕摨婜僒乕僶捛壛僀儀儞僩僋儔僗
/*--------------------------------------------------------------------*/
//曄峏棜楌
//擔晅 |曄峏幰 |撪梕
//--------------+---------------+--------------------------------------
//2006/06/23 |娵壀 |怴婯嶌惉
//2006/09/30 |暯壀 |USAT REFRESH懳墳(TRK10775)
//2006/10/16 |娵壀 |DB暅媽梡偺僀儀儞僩捛壛懳墳
//2006/10/18 |暯壀 |TRK11655懳墳
#ifndef __SMBMUSICAPSYNCSERVEREXTRAFUNC_H__
#include "SmbMusicAPSyncServerExtraFunc.h"
#endif
#ifndef __SMBMUSICAPSYNCSERVERMODEL_H__
#include "SmbMusicAPSyncServerModel.h"
#endif
#ifndef __SMBMUSICAPSYNCSERVERDEF_H__
#include <SmbMusicAPSyncServerDef.h>
#endif
#ifndef __SMBMUSICAPSYNCSERVERUTIL_H__
#include "SmbMusicAPSyncServerUtil.h"
#endif // __SMBMUSICAPSYNCSERVERUTIL_H__
USING_NAMESPACE_SEMCJ
/**
僐儞僗僩儔僋僞
* @param [in] aModel 僒乕僶儌僨儖僋儔僗偺嶲徠
* @param [in] aLog 儘僌僒乕僶僙僢僔儑儞偺嶲徠
* @return 側偟
*/
CSmbMusicAPSyncServerExtraFunc::CSmbMusicAPSyncServerExtraFunc(CSmbMusicAPSyncServerModel& aModel, DCM_NAMESPACE::RLog& aLog)
: iModel(aModel), iLog(aLog)
{
}
/**
僨僗僩儔僋僞
* @param 側偟
* @return 側偟
*/
CSmbMusicAPSyncServerExtraFunc::~CSmbMusicAPSyncServerExtraFunc()
{
//僀儀儞僩捠抦梡儊僢僙乕僕偺Array傪僋儘乕僘偡傞
iNotifyMessage.Close();
//僀儀儞僩僉儏乕傪僋儘乕僘偡傞
TInt cnt = iSession.Count();
for(TInt i = 0; i < cnt; i++)
{
iSession[i].iEvent.Close();
}
iSession.Close();
}
/**
愙懕梫媮
* @param [in] aSession 愙懕偡傞僙僢僔儑儞
* @return 側偟
*/
void CSmbMusicAPSyncServerExtraFunc::Connect(CSession2& aSession)
{
//僀儀儞僩偺攝怣愭偲偟偰僙僢僔儑儞傪搊榐偡傞
TSmbMusicAPSyncServerExtraEventRequestSession requestSession;
requestSession.iConnectSession = &aSession;
//僒乕僶偲愙懕偟偨僙僢僔儑儞傪搊榐偡傞
iSession.Append(requestSession);
}
/**
愗抐梫媮
* @param [in] aSession 愗抐偡傞僙僢僔儑儞
* @return 側偟
*/
void CSmbMusicAPSyncServerExtraFunc::DisConnect(CSession2& aSession)
{
for ( TInt i = iNotifyMessage.Count(); i > 0; i--)
{
if (iNotifyMessage[i-1].Session() == &aSession )
{
// 墳摎儊僢僙乕僕傪Write
iNotifyMessage[i-1].Complete(KErrNone);
iNotifyMessage.Remove(i-1);
break;
}
}
//愙懕偟偰偄傞僙僢僔儑儞偺悢
TInt cnt = iSession.Count();
//僀儀儞僩攝怣僉儏乕傪嶍彍偡傞
for(TInt i = 0; i < cnt; i++)
{
if(iSession[i].iConnectSession == &aSession)
{
//愗抐偡傞僙僢僔儑儞偺僀儀儞僩攝怣僉儏乕傪嶍彍偡傞
iSession[i].iEvent.Close();
iSession.Remove(i);
break;
}
}
// Model偑強桳偟偰偄傞session傪愗抐
iModel.DisConnect(aSession);
}
/**
僀儀儞僩捠抦梫媮曐懚
* @param [in] aMessage 僋儔僀傾儞僩偐傜搉偝傟偨僨乕僞傪奿擺偟偨儊僢僙乕僕偺嶲徠
* @return 側偟
*/
void CSmbMusicAPSyncServerExtraFunc::StackNotifyMsg(const RMessage2& aMessage)
{
// 僀儀儞僩捠抦梫媮傪曐懚
iNotifyMessage.Append(aMessage);
//僀儀儞僩傪攝怣偡傞乮僀儀儞僩偑僉儏乕偝傟偰偄側偗傟偽壗傕偟側偄)
BroadCast();
}
/**
僀儀儞僩捠抦梫媮偺僉儍儞僙儖
* @param [in] aMessage 僋儔僀傾儞僩偐傜搉偝傟偨僨乕僞傪奿擺偟偨儊僢僙乕僕偺嶲徠
* @return 側偟
*/
void CSmbMusicAPSyncServerExtraFunc::CancelStackNotifyMsg(const RMessage2& aMessage)
{
CSession2* session;
TInt ret = KErrNone;
session = aMessage.Session();
for ( TInt i = iNotifyMessage.Count(); i > 0; i--)
{
// 曐懚偟偰偄傞僀儀儞僩捠抦梫媮偲堷悢偺session偑摨偠傕偺偵懳偟偰姰椆偝偣傞
if (iNotifyMessage[i-1].Session() == session )
{
iNotifyMessage[i-1].Complete(KErrNone);
iNotifyMessage.Remove(i-1);
}
}
aMessage.Complete(ret);
}
/**
傾僾儕働乕僔儑儞廔椆捠抦
* @param [in] aMessage 僋儔僀傾儞僩偐傜搉偝傟偨僨乕僞傪奿擺偟偨儊僢僙乕僕偺嶲徠
* @return 側偟
*/
void CSmbMusicAPSyncServerExtraFunc::NotifyAppExitL(const RMessage2& aMessage)
{
CSession2* session;
session = aMessage.Session();
for ( TInt i = iNotifyMessage.Count(); i > 0; i--)
{
if (iNotifyMessage[i-1].Session() == session )
{
// 墳摎儊僢僙乕僕傪Write
iNotifyMessage[i-1].Complete(KErrNone);
iNotifyMessage.Remove(i-1);
}
}
aMessage.Complete(KErrNone);
}
/**
僀儀儞僩傪捠抦偡傞
* @param[in] aEvent 捠抦僀儀儞僩
* @param[in] aInfo 僀儀儞僩撪梕
* @return 側偟
*/
//@@TRK11655懳墳 Start
//void CSmbMusicAPSyncServerExtraFunc::SendNotify(TSmbMusicAPSyncEngineExtraEventType aEvent,
// TSmbMusicAPSyncEngineExtMemType aInfo)
void CSmbMusicAPSyncServerExtraFunc::SendNotify(TSmbMusicAPSyncEngineExtraEventType aEvent,
TSmbMusicAPSyncEngineExtEventInfo1 aInfo)
//@@TRK11655懳墳 End
{
//僋儔僀傾儞僩傊偺僀儀儞僩峔憿懱
TSmbMusicAPSyncEngineExtraEvent event;
//捠抦僀儀儞僩偵傛偭偰張棟傪暘偗傞
switch(aEvent)
{
//奜晹儊儌儕偺敳嫀敪惗
case ESmbMusicAPSyncEngineRemoveExtMem:
//奜晹儊儌儕偺憓擖敪惗
case ESmbMusicAPSyncEngineInsertExtMem:
//TRK10775懳墳 Add-S
//USAT REFRESH
case ESmbMusicAPSyncEngineUsatRefresh:
//TRK10775懳墳 Add-E
//TRK11655懳墳 Add-S
///<DB暅媽捠抦
case ESmbMusicAPSyncEngineDBRecdover:
//TRK11655懳墳 Add-E
event.iType = aEvent;
break;
default:
//偦傟埲奜側偺偱僀儀儞僩捠抦偟傑偣傫
return;
}
//僀儀儞僩撪梕偵傛偭偰張棟傪暘偗傞
switch(aInfo)
{
//儊儌儕庬暿偑MS
case ESmbMusicAPSyncEngineMS:
//儊儌儕庬暿偑SD
case ESmbMusicAPSyncEngineSD:
//TRK10775懳墳 Add-S
//USAT REFRESH
case ESmbMusicAPSyncEngineUSAT:
//TRK10775懳墳 Add-E
event.iInfo.iParam1 = aInfo;
event.iInfo.iParam2 = 0;
break;
default:
//偦傟埲奜側偺偱僀儀儞僩捠抦偟傑偣傫
return;
}
//攝怣偡傞僀儀儞僩傪僉儏乕偵搊榐偡傞
AppendReuqestEvent(event);
//僀儀儞僩傪攝怣偡傞
BroadCast();
//僀儀儞僩撪梕傪儊僢僙乕僕偵Write偡傞偨傔偺僷僢働乕僕傪梡堄偡傞
// TPckg<TSmbMusicAPSyncEngineExtraEvent> pkg(event);
// TInt cnt = iNotifyMessage.Count();
// //曐帩偟偰偄傞慡偰偺儊僢僙乕僕偵僀儀儞僩傪敪峴偟傑偡
// TInt res = KErrNone;
// for ( TInt i = 0; i < cnt; i++)
// {
// // 墳摎儊僢僙乕僕傪敪峴
// res = iNotifyMessage[0].Write(1, pkg);
// if(KErrNone != res)
// {
// //儊僢僙乕僕偵彂偒崬傒幐攕
// iNotifyMessage[0].Complete(KErrGeneral);
// iNotifyMessage.Remove(0);
// //儘僌弌椡
// TInt log = EMusicAPSyncServerClassNumber06 | EMusicAPSyncServerLocationNumber00;
// _LIT(KServerPlayerFunc00, "SyncServerExtraFunc::SendNotify Write Error = %d");
// SmbMusicAPSyncServerLog(iLog, log, ELogLevelHighest, KServerPlayerFunc00, res);
// }
// else
// {
// //惓忢廔椆
// iNotifyMessage[0].Complete(KErrNone);
// iNotifyMessage.Remove(0);
// }
// }
}
/**
攝怣偡傞僀儀儞僩傪搊榐偡傞
* @param [in] aEvent 攝怣偡傞僀儀儞僩
* @return 側偟
*/
void CSmbMusicAPSyncServerExtraFunc::AppendReuqestEvent(TSmbMusicAPSyncEngineExtraEvent& aEvent)
{
//僒乕僶偲愙懕偟偰偄傞僙僢僔儑儞悢
TInt cnt = iSession.Count();
for(TInt i = 0; i < cnt; i++)
{
//攝怣僀儀儞僩傪僉儏乕僀儞僌偡傞
iSession[i].iEvent.Append(aEvent);
}
}
/**
搊榐偝傟偨僀儀儞僩傪攝怣偡傞
* @return 側偟
*/
void CSmbMusicAPSyncServerExtraFunc::BroadCast()
{
// Write偺栠傝抣
TInt ret = KErrNone;
//僒乕僶偲愙懕偟偰偄傞僙僢僔儑儞悢
TInt cnt = iSession.Count();
for(TInt i = 0; i < cnt; i++)
{
//僀儀儞僩偑僉儏乕偝傟偰偄傟偽攝怣偡傞
if(iSession[i].iEvent.Count() > 0)
{
//攝怣愭偺Watcher傪扵偡
for ( TInt j = iNotifyMessage.Count(); j > 0; j--)
{
//僀儀儞僩偑僉儏乕偝傟偰偄傞僙僢僔儑儞偺Watcher傪扵偡
if (iNotifyMessage[j-1].Session() == iSession[i].iConnectSession )
{
// 墳摎儊僢僙乕僕傪Write
TPckg<TSmbMusicAPSyncEngineExtraEvent> pRes(iSession[i].iEvent[0]);
ret = iNotifyMessage[j-1].Write(1, pRes);
if (KErrNone != ret)
{
// 儘僌弌椡
TInt log = EMusicAPSyncServerClassNumber06 | EMusicAPSyncServerLocationNumber00;
_LIT(KServerPlayerFunc00, "SyncServerExtraFunc::BroadCast Write Error = %d");
SmbMusicAPSyncServerLog(iLog, log, ELogLevelHighest, KServerPlayerFunc00, ret);
// Write偵幐攕偟偨偺偱丄僀儀儞僩攝怣傪峴傢側偄
iNotifyMessage[j-1].Complete(KErrWrite);
}
else // Write偵惉岟
{
iNotifyMessage[j-1].Complete(KErrNone);
}
iNotifyMessage.Remove(j-1);
//僉儏乕偝傟偰偄傞僀儀儞僩傪嶍彍偡傞
iSession[i].iEvent.Remove(0);
//僉儏乕傪攋婞偟偨偺偱2抜栚偺儖乕僾傪敳偗傑偡
break;
}
}
}
}
}
// end of SmbMusicAPSyncServerAppFunc.cpp
/* Copyright (C) 2006 Sony Ericsson Mobile Communications Japan, Inc. */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -