13d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/*
23d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Copyright (C) 2014 The Android Open Source Project
33d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
43d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Licensed under the Apache License, Version 2.0 (the "License");
53d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * you may not use this file except in compliance with the License.
63d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * You may obtain a copy of the License at
73d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
83d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *      http://www.apache.org/licenses/LICENSE-2.0
93d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Unless required by applicable law or agreed to in writing, software
113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * distributed under the License is distributed on an "AS IS" BASIS,
123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * See the License for the specific language governing permissions and
143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * limitations under the License.
153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */
163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/*==================================================================================================
183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    Source Name: dmEventLogger.cc
203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    General Description: Implementation of the DMEventLogger class
223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby==================================================================================================*/
243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "dmEventLogger.h"
263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "dm_uri_utils.h"
273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "dmtoken.h"
283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "xpl_dm_Notifications.h"
293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "dmPluginManager.h"
303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "dm_tree_class.H"
313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "dmEvent.h"
323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "xpl_Logger.h"
333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMEventLogger::DMEventLogger()
353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby     m_pTree = NULL;
373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMEventLogger::~DMEventLogger()
413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T DMEventLogger::Init( DMTree* tree )
453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if( !tree ) return SYNCML_DM_FAIL;
473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    m_pTree = tree;
493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return SYNCML_DM_SUCCESS;
503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyPDmtEventData
543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMEventLogger::Find(const DmtEventDataVector & aVector,
553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                             SYNCML_DM_EVENT_ACTION_T nAction,
563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                             BOOLEAN bIsCumulative,
573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                             BOOLEAN bIsEnabledByParent,
583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                             CPCHAR szName,
593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                             CPCHAR szNewName)
603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( bIsCumulative )
633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        // no need to search if new node added in it is tracked by node itself
653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        if ( nAction == SYNCML_DM_EVENT_ADD && !bIsEnabledByParent )
663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            return NULL;
673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    else
693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        if ( nAction != SYNCML_DM_EVENT_INDIRECT && nAction != SYNCML_DM_EVENT_REPLACE )
713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby           return NULL;
723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    for (INT32 index=aVector.size()-1; index>=0; index--)
753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        PDmtEventData & pEventData = (PDmtEventData&)(aVector[index]);
773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        if ( pEventData->GetName() == szName || pEventData->GetNewName() == szName )
783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        {
793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            return pEventData;
803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        }
813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return NULL;
833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T
883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMEventLogger::AddEvent(PDmtEventData & pEventData,
893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                        SYNCML_DM_EVENT_ACTION_T nAction,
903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                        CPCHAR szNewName)
913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    SYNCML_DM_RET_STATUS_T dm_stat = SYNCML_DM_SUCCESS;
943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    ((DMEventData*)pEventData.GetPtr())->AddAction(nAction);
963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( nAction == SYNCML_DM_EVENT_RENAME && szNewName )
973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        dm_stat = ((DMEventData*)pEventData.GetPtr())->SetNewName(szNewName);
993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
1003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    XPL_LOG_DM_TMN_Debug(("New action is added to logger, name = %s\n", (pEventData->GetName().c_str())));
1023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return SYNCML_DM_SUCCESS;
1033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
1043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T
1083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMEventLogger::AddEvent(DmtEventDataVector & aVector,
1093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                        SYNCML_DM_EVENT_ACTION_T nAction,
1103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                        BOOLEAN bIsLeaf,
1113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                        BOOLEAN bIsEnabledByParent,
1123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                        CPCHAR szName,
1133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                        CPCHAR szNewName)
1143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
1153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    SYNCML_DM_RET_STATUS_T dm_stat = SYNCML_DM_SUCCESS;
1173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    DMEventData* pDataPtr = NULL;
1193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    pDataPtr = new DMEventData();
1213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( pDataPtr == NULL )
1223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        return SYNCML_DM_DEVICE_FULL;
1233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    pDataPtr->SetAction(nAction);
1253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    pDataPtr->SetLeaf(bIsLeaf);
1263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    pDataPtr->SetEnabledByParent(bIsEnabledByParent);
1273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    dm_stat =   pDataPtr->SetName(szName);
1293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( dm_stat != SYNCML_DM_SUCCESS )
1303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
1313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        delete pDataPtr;
1323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        return dm_stat;
1333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
1343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( nAction == SYNCML_DM_EVENT_RENAME && szNewName )
1363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
1373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        dm_stat = pDataPtr->SetNewName(szNewName);
1383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        if ( dm_stat != SYNCML_DM_SUCCESS )
1393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        {
1403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            delete pDataPtr;
1413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            return dm_stat;
1423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        }
1433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
1443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    aVector.push_back(PDmtEventData(pDataPtr));
1463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    XPL_LOG_DM_TMN_Debug(("New event is added to logger, name = %s\n", szName));
1473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return SYNCML_DM_SUCCESS;
1493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
1503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyBOOLEAN
1543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMEventLogger::Find(CPCHAR szPath,
1553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                              const DMEventMap & aEventMap,
1563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                              PDMEventPath & pEventPath,
1573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                              DmtEventDataVector & aVector)
1583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
1593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    for ( DmtEventMap::POS nPos = 0; nPos < aEventMap.end(); nPos++ )
1613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
1623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        pEventPath =  aEventMap.get_key(nPos);
1633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        if ( pEventPath ->GetPath() == szPath )
1643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        {
1653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            aVector =  aEventMap.get_value(nPos);
1663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            return TRUE;
1673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            break;
1683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        }
1693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
1703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return FALSE;
1713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
1733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T
1773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMEventLogger::OnNodeChanged(CPCHAR szPath ,
1783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                             SYNCML_DM_EVENT_ACTION_T nAction,
1793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                             DMEventMap & aEventMap,
1803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                             BOOLEAN bIsCumulative,
1813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                             BOOLEAN bIsEnabledByParent,
1823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                             CPCHAR szNewName )
1833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
1843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    SYNCML_DM_RET_STATUS_T dm_stat = SYNCML_DM_SUCCESS;
1863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    DMURI oURI(FALSE, szPath);
1883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    CPCHAR pParent = oURI.getParentURI();
1903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    CPCHAR pNode = oURI.getTailSegments();
1913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    DmtEventDataVector aVector;
1933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    PDMEventPath pEventPath;
1943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    BOOLEAN bFound = Find(pParent,aEventMap, pEventPath,aVector);
1953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( bFound == FALSE )
1973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
1983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        pEventPath = PDMEventPath(new DMEventPath(pParent));
1993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        if ( pEventPath  == NULL )
2013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        {
2023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            XPL_LOG_DM_TMN_Error(("Memory allocation error \n"));
2033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            return SYNCML_DM_DEVICE_FULL;
2043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        }
2053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
2063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    PDmtEventData pEventData = NULL;
2083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    pEventData = Find(aVector,nAction, bIsCumulative,bIsEnabledByParent,pNode,szNewName);
2093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( pEventData != NULL )
2113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
2123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby          dm_stat = AddEvent(pEventData, nAction, szNewName);
2133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
2143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    else
2153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
2163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby         BOOLEAN bIsLeaf = FALSE;
2173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby         if ( nAction == SYNCML_DM_EVENT_REPLACE )
2193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            bIsLeaf = TRUE;
2203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        else
2213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        {
2223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            DMMetaDataManager & m_oMDFObj =  m_pTree->GetMetaDataManager();
2233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            bIsLeaf = m_oMDFObj.IsLeaf(szPath);
2243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        }
2253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        dm_stat = AddEvent(aVector, nAction, bIsLeaf, bIsEnabledByParent, pNode, szNewName);
2263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
2273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( dm_stat != SYNCML_DM_SUCCESS )
2293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
2303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        XPL_LOG_DM_TMN_Error(("Cannot add new event, dm_stat = %d\n", dm_stat));
2313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        return dm_stat;
2323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
2333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    aEventMap.put( pEventPath , aVector );
2353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return SYNCML_DM_SUCCESS;
2373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
2393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T
2433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMEventLogger::OnNodeChanged(CPCHAR szPath,
2443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                             SYNCML_DM_EVENT_ACTION_T nAction,
2453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                             const PDMPlugin & pPlugin,
2463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                             BOOLEAN bIsEnabledByParent,
2473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                             CPCHAR szNewName )
2483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
2493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    SYNCML_DM_RET_STATUS_T dm_stat = SYNCML_DM_SUCCESS;
2513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    BOOLEAN bIsCumulative = FALSE;
2523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    DMEventMap aEventMap;
2543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    XPL_LOG_DM_TMN_Debug(("OnNodeChanged called for commit plug-in %s\n", szPath));
2563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    m_aPluginEvents.lookup(pPlugin,aEventMap);
2573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( pPlugin->GetType() == SYNCML_DM_EVENT_CUMULATIVE )
2593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby         bIsCumulative = TRUE;
2603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    dm_stat =  OnNodeChanged(szPath,nAction,aEventMap,bIsCumulative,bIsEnabledByParent,szNewName);
2623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( dm_stat != SYNCML_DM_SUCCESS )
2633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        return dm_stat;
2643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    m_aPluginEvents.put(pPlugin,aEventMap);
2663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return SYNCML_DM_SUCCESS;
2673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
2693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T
2723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMEventLogger::OnNodeChanged(CPCHAR szPath,
2733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                             SYNCML_DM_EVENT_ACTION_T nAction,
2743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                             const PDMConfigItem & pItem,
2753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                             BOOLEAN bIsEnabledByParent,
2763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                             CPCHAR szNewName )
2773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
2783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    SYNCML_DM_RET_STATUS_T dm_stat = SYNCML_DM_SUCCESS;
2803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    BOOLEAN bIsCumulative = FALSE;
2813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    DMEventMap aEventMap;
2833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    XPL_LOG_DM_TMN_Debug(("OnNodeChanged called for ES %s\n", szPath));
2843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    m_aPostEvents.lookup(pItem,aEventMap);
2853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( ((DMSubscriptionItem*)(pItem.GetPtr()))->GetType() == SYNCML_DM_EVENT_CUMULATIVE )
2873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby         bIsCumulative = TRUE;
2883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    dm_stat =  OnNodeChanged(szPath,nAction,aEventMap,bIsCumulative,bIsEnabledByParent,szNewName);
2903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( dm_stat != SYNCML_DM_SUCCESS )
2913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        return dm_stat;
2923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    m_aPostEvents.put(pItem,aEventMap);
2943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return SYNCML_DM_SUCCESS;
2953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
2973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyUINT32 DMEventLogger::GetSize(const DMEventMap & aEventMap)
3003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
3013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    UINT32 size = sizeof(UINT32) * 2;
3023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    for ( DMEventMap::POS nPos = 0; nPos < aEventMap.end(); nPos++ )
3043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
3053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby         const PDMEventPath & pPath = aEventMap.get_key(nPos);
3063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby         const DmtEventDataVector & aVector = aEventMap.get_value(nPos);
3073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby         size += pPath->GetSize();
3093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby         size += sizeof(UINT32);
3103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby         for (INT32 index=0; index<aVector.size(); index++)
3113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby         {
3123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            const PDmtEventData & pData = aVector[index];
3133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            DMEventData * pDataPtr  = (DMEventData*)pData.GetPtr();
3143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            size += pDataPtr->GetSize();
3153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby         }
3163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
3173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return size;
3193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
3203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T
3253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMEventLogger::Serialize(const DmtEventDataVector & aVector,
3263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                         DMBufferWriter & oBuffer)
3273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
3283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    SYNCML_DM_RET_STATUS_T dm_stat = SYNCML_DM_SUCCESS;
3293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    oBuffer.WriteUINT32(aVector.size());
3313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    for (INT32 index=0; index<aVector.size(); index++)
3333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
3343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby         const PDmtEventData & pData = aVector[index];
3353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby         dm_stat = ((DMEventData*)(pData.GetPtr()))->Serialize(oBuffer);
3363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby         if ( dm_stat != SYNCML_DM_SUCCESS )
3373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby             return dm_stat;
3383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
3393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return SYNCML_DM_SUCCESS;
3413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
3423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T
3453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMEventLogger::Serialize(const DMEventMap & aEventMap,
3463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                         DMBufferWriter & oBuffer)
3473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
3483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    SYNCML_DM_RET_STATUS_T dm_stat = SYNCML_DM_SUCCESS;
3493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    INT32 size = GetSize(aEventMap);
3513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    dm_stat = oBuffer.Allocate(size);
3523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( dm_stat != SYNCML_DM_SUCCESS )
3543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        return dm_stat;
3553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    oBuffer.WriteUINT32(size);
3573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    oBuffer.WriteUINT32(aEventMap.end());
3593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    for ( DMEventMap::POS nPos = 0; nPos < aEventMap.end(); nPos++ )
3613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
3623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby         const PDMEventPath & pPath = aEventMap.get_key(nPos);
3633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby         const DmtEventDataVector & aVector = aEventMap.get_value(nPos);
3643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby         dm_stat = pPath->Serialize(oBuffer);
3663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby         if ( dm_stat != SYNCML_DM_SUCCESS )
3673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            return dm_stat;
3683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby         dm_stat = Serialize(aVector,oBuffer);
3703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby         if ( dm_stat != SYNCML_DM_SUCCESS )
3713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            return dm_stat;
3723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
3733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return SYNCML_DM_SUCCESS;
3753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
3763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T
3783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMEventLogger::Deserialize(DMBufferReader & oBuffer,
3793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                           DMString & strParent,
3803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                           PDmtEventData & aData)
3813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
3823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    SYNCML_DM_RET_STATUS_T dm_stat = SYNCML_DM_SUCCESS;
3833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    UINT32 size = oBuffer.ReadUINT32();
3853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( size != oBuffer.GetSize() )
3863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        return SYNCML_DM_FAIL;
3873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    INT32 nPathsCount = (INT32)oBuffer.ReadUINT32();
3893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( nPathsCount != 1 )
3903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        return SYNCML_DM_FAIL;
3913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    DMEventPath oPath;
3933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    dm_stat = oPath.Deserialize(oBuffer);
3943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    strParent = oPath.GetPath();
3963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    INT32 nNodesCount =  (INT32)oBuffer.ReadUINT32();
3983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( nNodesCount != 1 )
3993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby       return SYNCML_DM_FAIL;
4003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
4013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    DMEventData * pDataPtr = new DMEventData();
4023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( pDataPtr == NULL )
4033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby         return SYNCML_DM_DEVICE_FULL;
4043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
4053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    dm_stat = pDataPtr->Deserialize(oBuffer);
4063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( dm_stat != SYNCML_DM_SUCCESS )
4073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
4083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby          delete pDataPtr;
4093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby          return dm_stat;
4103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
4113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
4123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    aData = PDmtEventData(pDataPtr);
4133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
4143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return SYNCML_DM_SUCCESS;
4153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
4163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
4173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
4183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
4193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
4203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T
4213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMEventLogger::Deserialize(DMBufferReader & oBuffer,
4223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                           DmtEventDataVector & aVector)
4233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
4243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    SYNCML_DM_RET_STATUS_T dm_stat = SYNCML_DM_SUCCESS;
4253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
4263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    INT32 nNodesCount =  (INT32)oBuffer.ReadUINT32();
4273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( nNodesCount == 0 )
4283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        return SYNCML_DM_FAIL;
4293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
4303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    for (INT32 index =0; index<nNodesCount; index++)
4313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
4323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        DMEventData * pDataPtr = new DMEventData();
4333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        if ( pDataPtr == NULL )
4343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            return SYNCML_DM_DEVICE_FULL;
4353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
4363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        dm_stat = pDataPtr->Deserialize(oBuffer);
4373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        if ( dm_stat != SYNCML_DM_SUCCESS )
4383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        {
4393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            delete pDataPtr;
4403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            return dm_stat;
4413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        }
4423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        aVector.push_back(PDmtEventData(pDataPtr));
4433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
4443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
4453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return SYNCML_DM_SUCCESS;
4463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
4473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
4483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
4493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
4503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
4513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T
4523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMEventLogger::Deserialize(DMBufferReader & oBuffer,
4533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                           DmtEventMap & aEventMap)
4543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
4553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    SYNCML_DM_RET_STATUS_T dm_stat = SYNCML_DM_SUCCESS;
4563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
4573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    UINT32 size = oBuffer.ReadUINT32();
4583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( size != oBuffer.GetSize() )
4593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        return SYNCML_DM_FAIL;
4603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
4613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    INT32 nPathsCount = (INT32)oBuffer.ReadUINT32();
4623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( nPathsCount == 0 )
4633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        return SYNCML_DM_FAIL;
4643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
4653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    for (INT32 index = 0; index<nPathsCount; index++)
4663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
4673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        DMEventPath oPath;
4683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        dm_stat = oPath.Deserialize(oBuffer);
4693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        if ( dm_stat != SYNCML_DM_SUCCESS )
4703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            return dm_stat;
4713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
4723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        DmtEventDataVector aVector;
4733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
4743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        dm_stat = Deserialize(oBuffer,aVector);
4753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        if ( dm_stat != SYNCML_DM_SUCCESS )
4763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            return dm_stat;
4773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
4783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        aEventMap.put(oPath.GetPath(), aVector);
4793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
4803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
4813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
4823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return SYNCML_DM_SUCCESS;
4833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
4843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
4853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambyvoid DMEventLogger::OnTreeSaved()
4863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
4873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
4883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    for ( DMPostEventMap::POS nPos = 0; nPos < m_aPostEvents.end(); nPos++ )
4893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
4903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        const PDMConfigItem & pItem = m_aPostEvents.get_key(nPos);
4913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        const DMEventMap & aEventMap = m_aPostEvents.get_value(nPos);
4923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        SYNCML_DM_EVENT_TYPE_T nType =  ((DMSubscriptionItem*)(pItem.GetPtr()))->GetType();
4933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        DMString strTopic = ((DMSubscriptionItem*)(pItem.GetPtr()))->GetTopic();
4943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
4953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        DMBufferWriter oBuffer;
4963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        if ( Serialize(aEventMap,oBuffer) == SYNCML_DM_SUCCESS )
4973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        {
4983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby             if ( strTopic == NULL )
4993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby             {
5003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                strTopic = pItem->GetPath();
5013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                XPL_LOG_DM_TMN_Debug(("Sending event for %s\n", strTopic.c_str()));
5023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                XPL_DM_NotifyTreeUpdate(strTopic, NULL, nType, oBuffer.GetBuffer(), oBuffer.GetSize());
5033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby             }
5043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby             else
5053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby             {
5063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                XPL_LOG_DM_TMN_Debug(("Sending event for %s\n", strTopic.c_str()));
5073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                XPL_DM_NotifyTreeUpdate(strTopic, pItem->GetPath(), nType, oBuffer.GetBuffer(), oBuffer.GetSize());
5083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby             }
5093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        }
5103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        else
5113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        {
5123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            XPL_LOG_DM_TMN_Error(("Event Serialization failed\n"));
5133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        }
5143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
5153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
5163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    Reset();
5173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
5183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
5193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambyvoid DMEventLogger::Reset()
5203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
5213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    m_aPostEvents.clear();
5223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    m_aPluginEvents.clear();
5233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
5243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
5253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambyvoid DMEventLogger::GetCommitPluginEvents(const PDMPlugin & pPlugin,
5263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                                          DmtEventMap  & aUpdatedNodes ) const
5273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
5283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    DMEventMap aStoredMap;
5293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
5303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    m_aPluginEvents.lookup(pPlugin,aStoredMap);
5313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    for ( DmtEventMap::POS nPos = 0; nPos < aStoredMap.end(); nPos++ )
5323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
5333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby         const PDMEventPath & pPath = aStoredMap.get_key(nPos);
5343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby         const DmtEventDataVector & aVector = aStoredMap.get_value(nPos);
5353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby         aUpdatedNodes.put(pPath->GetPath(),aVector);
5363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
5373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
5383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
5393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
5403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
5413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
5423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T
5433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMEventLogger::CleanEvents(DmtEventDataVector & aVector)
5443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
5453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
5463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    for ( INT32 index = aVector.size()-1; index >= 0; index-- )
5473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
5483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        const PDmtEventData & pData = aVector[index];
5493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        if (  ((DMEventData*)(pData.GetPtr()))->IsEnabledByParent() )
5503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            aVector.remove(index);
5513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
5523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return SYNCML_DM_SUCCESS;
5533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
5543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
5553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
5563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
5573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T
5583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMEventLogger::CleanEvents(DMEventMap & aEventMap, CPCHAR szPath)
5593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
5603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
5613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    for ( DMEventMap::POS nPos = aEventMap.end()-1; nPos >= 0; nPos-- )
5623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
5633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        const PDMEventPath & pPath = aEventMap.get_key(nPos);
5643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
5653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        BOOLEAN bIsParent = DmIsParentURI(szPath,pPath->GetPath());
5663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        if ( !bIsParent &&  !DmIsParentURI(pPath->GetPath(),szPath) )
5673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        {
5683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            continue;
5693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        }
5703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
5713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        if ( bIsParent )
5723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        {
5733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            DmtEventDataVector & aVector = aEventMap.get_value(nPos);
5743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            CleanEvents(aVector);
5753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            if ( !aVector.size() )
5763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                aEventMap.remove(pPath);
5773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        }
5783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
5793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return SYNCML_DM_SUCCESS;
5803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
5813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
5823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
5833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
5843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
5853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T
5863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMEventLogger::CleanConfigEvents(CPCHAR szPath)
5873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
5883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
5893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    for ( DMPostEventMap::POS nPos = m_aPostEvents.end()-1; nPos >= 0; nPos-- )
5903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
5913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        const PDMConfigItem & pConfigItem = m_aPostEvents.get_key(nPos);
5923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
5933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        if ( !DmIsParentURI(szPath,pConfigItem->GetPath()) &&
5943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby             !DmIsParentURI(pConfigItem->GetPath(),szPath) )
5953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        {
5963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            continue;
5973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        }
5983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
5993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        DMParser oStored(pConfigItem->GetPath());
6003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        DMParser oRemoved(szPath);
6013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
6023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        if ( oRemoved.getSegmentsCount() < oStored.getSegmentsCount() )
6033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        {
6043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            m_aPostEvents.remove(pConfigItem);
6053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            continue;
6063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        }
6073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
6083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        DMEventMap & aEventMap = m_aPostEvents.get_value(nPos);
6093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        CleanEvents(aEventMap,szPath);
6103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        if ( !aEventMap.size() )
6113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            m_aPostEvents.remove(pConfigItem);
6123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
6133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
6143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return SYNCML_DM_SUCCESS;
6153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
6163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
6173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
6183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T
6193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMEventLogger::CleanPluginEvents(CPCHAR szPath)
6203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
6213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
6223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    for ( DMPostEventMap::POS nPos = m_aPluginEvents.end()-1; nPos >= 0; nPos-- )
6233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
6243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        const PDMPlugin & pPlugin = m_aPluginEvents.get_key(nPos);
6253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
6263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby         if ( !DmIsParentURI(szPath,pPlugin->GetPath()) &&
6273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby             !DmIsParentURI(pPlugin->GetPath(),szPath) )
6283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        {
6293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            continue;
6303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        }
6313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
6323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        DMParser oStored(pPlugin->GetPath());
6333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        DMParser oRemoved(szPath);
6343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
6353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        if ( oRemoved.getSegmentsCount() < oStored.getSegmentsCount() )
6363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        {
6373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            m_aPluginEvents.remove(pPlugin);
6383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            continue;
6393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        }
6403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
6413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        DMEventMap & aEventMap = m_aPluginEvents.get_value(nPos);
6423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        CleanEvents(aEventMap,szPath);
6433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        if ( !aEventMap.size() )
6443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            m_aPluginEvents.remove(pPlugin);
6453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
6463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return SYNCML_DM_SUCCESS;
6473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
6483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
6493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
6503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
6513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T
6523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMEventLogger::CleanEvents(CPCHAR szPath)
6533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
6543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    XPL_LOG_DM_TMN_Debug(("Clean events for %s\n", szPath));
6553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    CleanConfigEvents(szPath);
6563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    CleanPluginEvents(szPath);
6573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return SYNCML_DM_SUCCESS;
6583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
6593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
6603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
6613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
6623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
6633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T
6643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMEventLogger::UpdateEvents(DMEventMap & aEventMap,
6653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                            CPCHAR szPath,
6663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                            CPCHAR szNewName)
6673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
6683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
6693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    for ( DMEventMap::POS nPos = aEventMap.end()-1; nPos >= 0; nPos-- )
6703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
6713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        PDMEventPath & pPath = (PDMEventPath &)aEventMap.get_key(nPos);
6723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
6733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        if ( !DmIsParentURI(szPath,pPath->GetPath()) )
6743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            continue;
6753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
6763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        DMBuffer oNewPath;
6773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        if ( !oNewPath.allocate((pPath->GetPath()).length() + DmStrlen(szNewName)) )
6783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            return SYNCML_DM_DEVICE_FULL;
6793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
6803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        DMURI oPath(FALSE,szPath);
6813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        CPCHAR pParent = oPath.getParentURI();
6823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
6833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        CPCHAR pStoredPath = (CPCHAR)(pPath->GetPath());
6843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        DMURI oStoredTail(FALSE, pStoredPath + DmStrlen(szPath) + 1);
6853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
6863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        oStoredTail.nextSegment();
6873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        CPCHAR pTailSegments = oStoredTail.getTailSegments();
6883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
6893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
6903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        oNewPath.assign(pParent);
6913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        oNewPath.append((UINT8*)"/",1);
6923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        oNewPath.append((UINT8*)szNewName,DmStrlen(szNewName));
6933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
6943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        if ( pTailSegments )
6953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        {
6963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            oNewPath.append((UINT8*)"/",1);
6973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            oNewPath.append((UINT8*)pTailSegments,DmStrlen(pTailSegments));
6983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        }
6993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
7003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        pPath = PDMEventPath(new DMEventPath((CPCHAR)oNewPath.getBuffer()));
7013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
7023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        if ( pPath  == NULL )
7033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            return SYNCML_DM_DEVICE_FULL;
7043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
7053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return SYNCML_DM_SUCCESS;
7063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
7073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
7083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
7093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
7103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
7113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
7123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T
7133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMEventLogger::UpdateSubscriptionEvents(CPCHAR szPath,
7143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                                        CPCHAR szNewName)
7153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
7163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
7173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    for ( DMPostEventMap::POS nPos = m_aPostEvents.end()-1; nPos >= 0; nPos-- )
7183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
7193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        const PDMConfigItem & pConfigItem = m_aPostEvents.get_key(nPos);
7203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
7213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        if ( !DmIsParentURI(szPath,pConfigItem->GetPath()) &&
7223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby             !DmIsParentURI(pConfigItem->GetPath(),szPath) )
7233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        {
7243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            continue;
7253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        }
7263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
7273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        DMEventMap & aEventMap = m_aPostEvents.get_value(nPos);
7283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        UpdateEvents(aEventMap,szPath,szNewName);
7293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
7303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
7313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return SYNCML_DM_SUCCESS;
7323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
7333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
7343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
7353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
7363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T
7373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMEventLogger::UpdatePluginEvents(CPCHAR szPath,
7383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                                  CPCHAR szNewName)
7393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
7403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
7413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    for ( DMPluginEventMap::POS nPos = m_aPluginEvents.end()-1; nPos >= 0; nPos-- )
7423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
7433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        const PDMPlugin & pPlugin = m_aPluginEvents.get_key(nPos);
7443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
7453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        if ( !DmIsParentURI(szPath,pPlugin->GetPath()) &&
7463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby             !DmIsParentURI(pPlugin->GetPath(),szPath) )
7473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        {
7483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            continue;
7493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        }
7503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
7513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        DMEventMap & aEventMap = m_aPluginEvents.get_value(nPos);
7523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        UpdateEvents(aEventMap,szPath,szNewName);
7533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
7543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
7553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return SYNCML_DM_SUCCESS;
7563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
7573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
7583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
7593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
7603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T
7613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMEventLogger::UpdateEvents(CPCHAR szPath,
7623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                            CPCHAR szNewName)
7633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
7643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    XPL_LOG_DM_TMN_Debug(("Update events for %s\n", szPath));
7653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    UpdateSubscriptionEvents(szPath,szNewName);
7663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    UpdatePluginEvents(szPath,szNewName);
7673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return SYNCML_DM_SUCCESS;
7683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
7693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
7703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
7713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
7723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
7733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyBOOLEAN
7743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMEventLogger::FindRecordForAdd(const DmtEventDataVector & aVector,
7753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                                    CPCHAR szName)
7763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
7773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
7783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    for (INT32 index=aVector.size()-1; index>=0; index--)
7793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
7803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        const PDmtEventData & pEventData = aVector[index];
7813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
7823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        if ( !pEventData->IsLeaf() )
7833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            continue;  // we need only leaf nodes
7843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
7853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        if ( pEventData->GetName() == szName ) // No Rename on leaf nodes, so compare only name
7863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        {
7873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            if (pEventData->GetAction() == SYNCML_DM_EVENT_DELETE) // node was deleted
7883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            {
7893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                ((DMEventData*)pEventData.GetPtr())->SetAction(SYNCML_DM_EVENT_REPLACE); // delete+add on leaf node = replace
7903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                return TRUE;
7913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            }
7923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            break;
7933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        }
7943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
7953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return FALSE;
7963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
7973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
7983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
7993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyBOOLEAN
8003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMEventLogger::FindRecordForDelete(DmtEventDataVector & aVector,
8013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                                   CPCHAR szName)
8023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
8033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    BOOLEAN bIsIgnore = FALSE;
8043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    for (INT32 index=aVector.size()-1; index>=0; index--)
8053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
8063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby         const PDmtEventData & pEventData = aVector[index];
8073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        if ( pEventData->GetName() == szName || pEventData->GetNewName() == szName)
8083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        {
8093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby             if ( (pEventData->GetAction() & SYNCML_DM_EVENT_ADD) == SYNCML_DM_EVENT_ADD )
8103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            {
8113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                bIsIgnore = TRUE;
8123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                aVector.remove(index);
8133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            }
8143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
8153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            return bIsIgnore;
8163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        }
8173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
8183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
8193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return bIsIgnore;
8203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
8213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
8223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
8233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
8243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyBOOLEAN
8253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMEventLogger::FindRecordForReplace(const DmtEventDataVector & aVector,
8263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                                    CPCHAR szName)
8273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
8283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
8293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    for (INT32 index=aVector.size()-1; index>=0; index--)
8303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
8313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        const PDmtEventData & pEventData = aVector[index];
8323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        if ( pEventData->GetName() == szName ) // Replace is only on leaf nodes , no need to check new name
8333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        {
8343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            if ((pEventData->GetAction() & SYNCML_DM_EVENT_REPLACE) == SYNCML_DM_EVENT_REPLACE)
8353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                return TRUE;
8363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
8373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            if ((pEventData->GetAction() & SYNCML_DM_EVENT_ADD) == SYNCML_DM_EVENT_ADD)
8383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                return TRUE;
8393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
8403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            break;
8413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        }
8423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
8433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return FALSE;
8443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
8453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
8463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
8473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyBOOLEAN
8483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMEventLogger::FindRecordForRename(DmtEventDataVector & aVector,
8493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                                   CPCHAR szName,
8503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                                   CPCHAR szNewName)
8513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
8523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    BOOLEAN bIsIgnore = FALSE;
8533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
8543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    for (INT32 index=aVector.size()-1; index>=0; index--)
8553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
8563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        PDmtEventData & pEventData = aVector[index];
8573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        if (  ((pEventData->GetAction() & SYNCML_DM_EVENT_ADD) == SYNCML_DM_EVENT_ADD) &&
8583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby               pEventData->GetName() == szName )
8593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        {
8603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            ((DMEventData*)pEventData.GetPtr())->SetName(szNewName);
8613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            bIsIgnore = TRUE;
8623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            break;
8633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        }
8643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
8653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        if (  ((pEventData->GetAction() & SYNCML_DM_EVENT_RENAME) == SYNCML_DM_EVENT_RENAME) &&
8663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby               pEventData->GetNewName() == szName )
8673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        {
8683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            ((DMEventData*)pEventData.GetPtr())->SetNewName(szNewName);
8693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            bIsIgnore = TRUE;
8703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            break;
8713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        }
8723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
8733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return bIsIgnore;
8743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
8753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
8763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
8773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
8783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyBOOLEAN
8793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMEventLogger::CheckEventOnSameNode(DmtEventDataVector & aVector,
8803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                                    SYNCML_DM_EVENT_ACTION_T nAction,
8813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                                    CPCHAR szName,
8823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                                    BOOLEAN bIsCumulative,
8833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                                    CPCHAR szNewName)
8843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
8853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
8863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
8873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( bIsCumulative )
8883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
8893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        if ( nAction == SYNCML_DM_EVENT_RENAME )
8903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            return FindRecordForRename(aVector,szName,szNewName);
8913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
8923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    else
8933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
8943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        switch ( nAction )
8953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        {
8963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            case SYNCML_DM_EVENT_ADD:
8973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                return FindRecordForAdd(aVector,szName);
8983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
8993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            case SYNCML_DM_EVENT_REPLACE:
9003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                return FindRecordForReplace(aVector,szName);
9013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
9023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            case SYNCML_DM_EVENT_DELETE:
9033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                return FindRecordForDelete(aVector, szName);
9043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
9053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby           case  SYNCML_DM_EVENT_RENAME:
9063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                return FindRecordForRename(aVector,szName,szNewName);
9073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby         }
9083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby     }
9093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
9103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby     return  FALSE;
9113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
9123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
9133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
9143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
9153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
9163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
9173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyBOOLEAN
9183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMEventLogger::IsIgnoreEvent(CPCHAR szPath ,
9193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                             SYNCML_DM_EVENT_ACTION_T nAction,
9203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                             DMEventMap & aEventMap,
9213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                             BOOLEAN bIsCumulative,
9223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                             CPCHAR szNewName )
9233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
9243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
9253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
9263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    DMURI oURI(FALSE, szPath);
9273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
9283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    CPCHAR pParent = oURI.getParentURI();
9293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    CPCHAR pNode = oURI.getTailSegments();
9303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
9313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    DmtEventDataVector aVector;
9323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    PDMEventPath pEventPath;
9333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    BOOLEAN bIsFound = Find(pParent,aEventMap, pEventPath,aVector);
9343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
9353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( !bIsFound )
9363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        return FALSE;
9373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
9383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    BOOLEAN bIsIgnore = CheckEventOnSameNode(aVector,
9393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                                             nAction,
9403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                                             pNode,
9413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                                             bIsCumulative,
9423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                                             szNewName);
9433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( !aVector.size() )
9443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        aEventMap.remove(pEventPath);
9453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    else
9463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        aEventMap.put(pEventPath,aVector);
9473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
9483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return bIsIgnore;
9493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
9503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
9513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
9523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
9533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
9543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyBOOLEAN
9553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMEventLogger::IsIgnoreSubscriptionEvent(CPCHAR szPath,
9563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                                         SYNCML_DM_EVENT_ACTION_T nAction,
9573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                                         CPCHAR szNewName)
9583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
9593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
9603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    BOOLEAN bIsIgnore = TRUE;
9613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    BOOLEAN bIsCumulative = FALSE;
9623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
9633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    PDMConfigItem pFoundItem;
9643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    DMEventMap aEventMap;
9653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    UINT32 nSegmentCount = 0;
9663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
9673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    for ( DMPostEventMap::POS nPos = m_aPostEvents.end()-1; nPos >= 0; nPos--  )
9683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
9693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        const PDMConfigItem & pConfigItem = m_aPostEvents.get_key(nPos);
9703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
9713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        if (  !DmIsParentURI(pConfigItem->GetPath(),szPath) )
9723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            continue;
9733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
9743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        DMParser oParser(szPath);
9753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        if ( nSegmentCount < oParser.getSegmentsCount() )
9763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        {
9773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            nSegmentCount = oParser.getSegmentsCount();
9783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            pFoundItem = pConfigItem;
9793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            aEventMap = m_aPostEvents.get_value(nPos);
9803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        }
9813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
9823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
9833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( pFoundItem == NULL )
9843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby       return FALSE;
9853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
9863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( ((DMSubscriptionItem*)( pFoundItem.GetPtr()))->GetType() == SYNCML_DM_EVENT_CUMULATIVE )
9873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        bIsCumulative = TRUE;
9883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
9893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    bIsIgnore = IsIgnoreEvent(szPath,
9903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                              nAction,
9913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                              aEventMap,
9923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                              bIsCumulative,
9933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                              szNewName);
9943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
9953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( !aEventMap.size() )
9963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        m_aPostEvents.remove( pFoundItem);
9973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    else
9983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        m_aPostEvents.put(pFoundItem,aEventMap);
9993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
10003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return bIsIgnore;
10013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
10023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
10033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
10043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
10053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
10063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
10073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyBOOLEAN
10083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMEventLogger::IsIgnorePluginEvent(CPCHAR szPath,
10093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                                   SYNCML_DM_EVENT_ACTION_T nAction,
10103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                                   CPCHAR szNewName)
10113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
10123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
10133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    BOOLEAN bIsIgnore = TRUE;
10143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    BOOLEAN bIsCumulative = FALSE;
10153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
10163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    PDMPlugin pFoundPlugin;
10173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    DMEventMap aEventMap;
10183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    UINT32 nSegmentCount = 0;
10193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
10203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    for ( DMPluginEventMap::POS nPos = m_aPluginEvents.end()-1; nPos >= 0; nPos-- )
10213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
10223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        const PDMPlugin & pPlugin = m_aPluginEvents.get_key(nPos);
10233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
10243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        if (  !DmIsParentURI(pPlugin->GetPath(),szPath) )
10253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            continue;
10263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
10273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        DMParser oParser(szPath);
10283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        if ( nSegmentCount < oParser.getSegmentsCount() )
10293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        {
10303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            nSegmentCount = oParser.getSegmentsCount();
10313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            pFoundPlugin = pPlugin;
10323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            aEventMap = m_aPluginEvents.get_value(nPos);
10333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        }
10343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
10353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
10363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
10373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( pFoundPlugin == NULL )
10383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        return FALSE;
10393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
10403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( pFoundPlugin->GetType() == SYNCML_DM_EVENT_CUMULATIVE )
10413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby         bIsCumulative = TRUE;
10423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
10433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    bIsIgnore = IsIgnoreEvent(szPath,
10443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                              nAction,
10453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                              aEventMap,
10463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                              bIsCumulative,
10473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                              szNewName);
10483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
10493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( !aEventMap.size() )
10503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        m_aPluginEvents.remove(pFoundPlugin);
10513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    else
10523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        m_aPluginEvents.put(pFoundPlugin,aEventMap);
10533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
10543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return bIsIgnore;
10553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
1056