📄 smbmusicapsyncserverappfunc.cpp
字号:
/* Copyright (C) 2006 Sony Ericsson Mobile Communications Japan, Inc. */
/*--------------------------------------------------------------------*/
// FileName:
// SmbMusicAPSyncServerAppFunc.cpp
//
// Description:
// PTX810 Music傾僾儕 摨婜僒乕僶 傾僾儕摨婜僋儔僗
/*--------------------------------------------------------------------*/
//曄峏棜楌
//擔晅 |曄峏幰 |撪梕
//--------------+---------------+--------------------------------------
//2006/05/31 |暯壀 |怴婯嶌惉
//2006/07/19 |娵壀 |TRK4008懳墳
//----PTX824----+---------------+--------------------------------------
//2007/04/18 |K3悪杮 |PTX824懳墳(堦妵儔僀僙儞僗僠僃僢僋幚峴忬嫷愝掕/庢摼懳墳)
#ifndef __SMBMUSICAPSYNCSERVERAPPFUNC_H__
#include "SmbMusicAPSyncServerAppFunc.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 側偟
*/
CSmbMusicAPSyncServerAppFunc::CSmbMusicAPSyncServerAppFunc(CSmbMusicAPSyncServerModel& aModel, DCM_NAMESPACE::RLog& aLog)
: iModel(aModel), iLog(aLog)
{
}
/**
僨僗僩儔僋僞
* @param 側偟
* @return 側偟
*/
CSmbMusicAPSyncServerAppFunc::~CSmbMusicAPSyncServerAppFunc()
{
iActiveSession = NULL;
//僀儀儞僩捠抦梫媮偺儊僢僙乕僕傪姰椆偝偣傞
for ( TInt i = 0; i < iNotifyMessage.Count(); i++)
{
// 墳摎儊僢僙乕僕傪Write
iNotifyMessage[0].Complete(KErrServerTerminated);
iNotifyMessage.Remove(0);
}
//梫媮儊僢僙乕僕傪姰椆偝偣傞
if(iReqCount > 0)
{
//梫媮儊僢僙乕僕傪強桳偟偰偄傞応崌丄梫媮傪捠抦
iReqMessage.Complete(KErrServerTerminated);
//梫媮儊僢僙乕僕傪僨僋儕儊儞僩偡傞
iReqCount--;
}
//@@TRK4008懳墳 Start
//僀儀儞僩傪僉儏乕偟偰偄傟偽攋婞偡傞
TInt cnt = iSession.Count();
for(TInt i = 0; i < cnt; i++)
{
iSession[0].iEvent.Close();
iSession.Remove(0);
}
//慡偰偺Array傪Close偡傞
iSession.Close();
//@@TRK4008懳墳 End
iNotifyMessage.Close();
}
/**
愙懕梫媮
* @param [in] aSession 愙懕偡傞僙僢僔儑儞
* @return 側偟
*/
void CSmbMusicAPSyncServerAppFunc::Connect(CSession2& aSession)
{
// 傾僋僥傿僽僙僢僔儑儞偑愝掕偝傟偰偄側偗傟偽傾僋僥傿僽僙僢僔儑儞偲偟偰儊儞僶曄悢偵曐懚
if (NULL == iActiveSession)
{
// 傾僋僥傿僽側僙僢僔儑儞傪曐懚偡傞
iActiveSession = &aSession;
}
//僀儀儞僩偺攝怣愭偲偟偰僙僢僔儑儞傪搊榐偡傞
TSmbMusicAPSyncServerAppEventRequestSession requestSession;
requestSession.iConnectSession = &aSession;
//僒乕僶偲愙懕偟偨僙僢僔儑儞傪搊榐偡傞
iSession.Append(requestSession);
}
/**
愗抐梫媮
* @param [in] aSession 愗抐偡傞僙僢僔儑儞
* @return 側偟
*/
void CSmbMusicAPSyncServerAppFunc::DisConnect(CSession2& aSession)
{
//傾僋僥傿僽僙僢僔儑儞傪僋儕傾
iActiveSession = NULL;
//僀儀儞僩捠抦梫媮偺儊僢僙乕僕傪扵偡
for ( TInt i = iNotifyMessage.Count(); i > 0; i--)
{
if (iNotifyMessage[i-1].Session() == &aSession )
{
// 墳摎儊僢僙乕僕傪Write
iNotifyMessage[i-1].Complete(KErrNone);
iNotifyMessage.Remove(i-1);
}
}
if(iReqCount > 0)
{
//梫媮儊僢僙乕僕傪強桳偟偰偄傞応崌
if(&aSession == iReqMessage.Session())
{
// 梫媮傪捠抦
iReqMessage.Complete(KErrDisconnected);
//梫媮儊僢僙乕僕傪僨僋儕儊儞僩偡傞
iReqCount--;
}
}
//@@TRK4008懳墳 Start
// Model偑強桳偟偰偄傞session傪愗抐
iModel.DisConnect(aSession);
//搊榐偟偰偄傞僙僢僔儑儞傪嶍彍偡傞
RemoveSession(aSession);
// TInt cnt = iSession.Count();
// for(TInt i = 0; i < cnt; i++)
// {
// //搊榐偟偰偄傞僙僢僔儑儞傪嶍彍偡傞
// if(&aSession == iSession[i].iConnectSession)
// {
// iSession.Remove(i);
// }
// }
//@@TRK4008懳墳 End
}
/**
Hold梫媮捠抦
* @param [in] aMessage 僋儔僀傾儞僩偐傜搉偝傟偨僨乕僞傪奿擺偟偨儊僢僙乕僕偺嶲徠
* @return 側偟
*/
void CSmbMusicAPSyncServerAppFunc::NotifyHoldReq(const RMessage2& aMessage)
{
// Read偺栠傝抣
TInt ret = KErrNone;
// 梫媮儊僢僙乕僕偺撪梕(Hold棟桼)傪庢摼
TSmbMusicAPSyncServerAppSyncReqPkg reqPkg;
TPckg<TSmbMusicAPSyncServerAppSyncReqPkg> p(reqPkg);
ret = aMessage.Read(0,p);
if (KErrNone != ret)
{
// 儘僌弌椡
TInt log = EMusicAPSyncServerClassNumber11 | EMusicAPSyncServerLocationNumber00;
_LIT(KAppFuncLog00, "SyncServerAppFunc::NotifyHoldReq");
SmbMusicAPSyncServerLog(iLog, log, ELogLevelHighest, KAppFuncLog00);
//僀儀儞僩傪攝怣偣偢偵姰椆
aMessage.Complete(KErrNone);
return;
}
// 墳摎儊僢僙乕僕傪嶌惉
TSmbMusicAPSyncEngineSyncEvent res;
res.iType = ESmbMusicAPSyncEngineHoldApp;
res.iInfo = reqPkg.iData.iSyncMsg.iInfo;
//@@TRK4008懳墳 Start
CSession2* session;
session = aMessage.Session();
//攝怣偡傞僀儀儞僩傪搊榐偡傞
AppendReuqestEvent(*session, res);
//僀儀儞僩傪攝怣偡傞
BroadCast();
// for ( TInt i = iNotifyMessage.Count(); i > 0; i--)
// {
// if (iNotifyMessage[i-1].Session() != session )
// {
// // 墳摎儊僢僙乕僕傪Write
// TPckg<TSmbMusicAPSyncEngineSyncEvent> pRes(res);
// iNotifyMessage[i-1].WriteL(1, pRes);
// iNotifyMessage[i-1].Complete(KErrNone);
// iNotifyMessage.Remove(i-1);
// }
// }
//@@TRK4008懳墳 End
//梫媮偵懳偟偰墳摎傪曉偡
aMessage.Complete(KErrNone);
}
/**
Hold夝彍梫媮捠抦
* @param [in] aMessage 僋儔僀傾儞僩偐傜搉偝傟偨僨乕僞傪奿擺偟偨儊僢僙乕僕偺嶲徠
* @return 側偟
*/
void CSmbMusicAPSyncServerAppFunc::NotifyCancelHoldReq(const RMessage2& aMessage)
{
// 墳摎儊僢僙乕僕傪嶌惉
TSmbMusicAPSyncEngineSyncEvent res;
res.iType = ESmbMusicAPSyncEngineCancelHoldApp;
//@@TRK4008懳墳 Start
CSession2* session;
session = aMessage.Session();
//攝怣偡傞僀儀儞僩傪搊榐偡傞
AppendReuqestEvent(*session, res);
//僀儀儞僩傪攝怣偡傞
BroadCast();
// for ( TInt i = iNotifyMessage.Count(); i > 0; i--)
// {
// if (iNotifyMessage[i-1].Session() != session )
// {
// // 墳摎儊僢僙乕僕傪Write
// TPckg<TSmbMusicAPSyncEngineSyncEvent> pRes(res);
// iNotifyMessage[i-1].WriteL(1, pRes);
// iNotifyMessage[i-1].Complete(KErrNone);
// iNotifyMessage.Remove(i-1);
// }
// }
//@@TRK4008懳墳 End
//梫媮偵懳偟偰墳摎傪曉偡
aMessage.Complete(KErrNone);
}
/**
強桳尃夝曻梫媮捠抦
* @param [in] aMessage 僋儔僀傾儞僩偐傜搉偝傟偨僨乕僞傪奿擺偟偨儊僢僙乕僕偺嶲徠
* @return 側偟
*/
void CSmbMusicAPSyncServerAppFunc::NotifyReleaseReq(const RMessage2& aMessage)
{
CSession2* session;
session = aMessage.Session();
// 墳摎儊僢僙乕僕傪嶌惉
TSmbMusicAPSyncEngineSyncEvent res;
res.iType = ESmbMusicAPSyncEngineRequestReleaseSyncServer;
if (session == iActiveSession)
{
// 強桳尃傪偡偱偵曐帩偟偰偄傞応崌丄偦偺傑傑姰椆
aMessage.Complete(KErrNone);
}
else
{
//梫媮儊僢僙乕僕偑偡偱偵偁傞応崌偼丄僄儔乕傪曉偡
if (0 != iReqCount)
{
aMessage.Complete(KErrServerBusy);
// 儘僌弌椡
TInt log = EMusicAPSyncServerClassNumber11 | EMusicAPSyncServerLocationNumber07;
_LIT(KAppFuncLog07, "SyncServerAppFunc::NotifyReleaseReq");
SmbMusicAPSyncServerLog(iLog, log, ELogLevelHighest, KAppFuncLog07);
return;
}
// 強桳尃傪曐帩偡傞僋儔僀傾儞僩偵懳偟偰夝曻梫媮傪捠抦
iReqMessage = aMessage;
//梫媮儊僢僙乕僕傪僀儞僋儕儊儞僩偡傞
iReqCount++;
//@@TRK4008懳墳 Start
//攝怣偡傞僀儀儞僩傪搊榐偡傞
AppendReuqestEvent(*session, res);
//僀儀儞僩傪攝怣偡傞
BroadCast();
// for ( TInt i = iNotifyMessage.Count(); i > 0; i--)
// {
// if (iNotifyMessage[i-1].Session() != session )
// {
// // 墳摎儊僢僙乕僕傪Write
// TPckg<TSmbMusicAPSyncEngineSyncEvent> pRes(res);
// iNotifyMessage[i-1].WriteL(1, pRes);
// iNotifyMessage[i-1].Complete(KErrNone);
// iNotifyMessage.Remove(i-1);
// }
// }
//@@TRK4008懳墳 End
}
}
/**
強桳尃夝曻墳摎
* @param [in] aMessage 僋儔僀傾儞僩偐傜搉偝傟偨僨乕僞傪奿擺偟偨儊僢僙乕僕偺嶲徠
* @return 側偟
*/
void CSmbMusicAPSyncServerAppFunc::ReturnReleaseRes(const RMessage2& aMessage)
{
// Read丒Write偺栠傝抣
TInt ret = KErrNone;
CSession2* session;
session = aMessage.Session();
// 僒乕僶偱曐帩偟偰偄傞傾僋僥傿僽僙僢僔儑儞偐傜偺墳摎偺応崌
if (session == iActiveSession)
{
// 強桳尃夝曻梫媮尦傪傾僋僥傿僽僙僢僔儑儞偲偟偰曐帩
iActiveSession = iReqMessage.Session();
// 梫媮儊僢僙乕僕偺撪梕(夝曻墳摎寢壥)傪庢摼
TSmbMusicAPSyncServerAppSyncReqPkg reqPkg;
TPckg<TSmbMusicAPSyncServerAppSyncReqPkg> p(reqPkg);
ret = aMessage.Read(0,p);
if (KErrNone != ret)
{
// 儘僌弌椡
TInt log = EMusicAPSyncServerClassNumber11 | EMusicAPSyncServerLocationNumber01;
_LIT(KAppFuncLog01, "SyncServerAppFunc::ReturnReleaseRes Read() Err(%d)");
SmbMusicAPSyncServerLog(iLog, log, ELogLevelHighest, KAppFuncLog01, ret);
}
else // Read惉岟
{
// 墳摎儊僢僙乕僕傪嶌惉
TInt res;
res = reqPkg.iData.iSyncMsg.iInfo.iParam1;
// 墳摎儊僢僙乕僕傪Write
TPckg<TInt> pRes(res);
ret = iReqMessage.Write(1, pRes);
if (KErrNone != ret)
{
// 儘僌弌椡
TInt log = EMusicAPSyncServerClassNumber11 | EMusicAPSyncServerLocationNumber02;
_LIT(KAppFuncLog02, "SyncServerAppFunc::ReturnReleaseRes Write() Err(%d)");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -