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: dmSubscriptionItem.cc 203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby General Description: Implementation of the DMSubscriptionItem class 223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby==================================================================================================*/ 243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "dmSubscriptionItem.h" 263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "dm_uri_utils.h" 273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "dmdefs.h" 283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "dmtoken.h" 293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "xpl_Logger.h" 303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "xpl_dm_Manager.h" 313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "dm_tree_class.H" 323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMSubscriptionItem::DMSubscriptionItem(CPCHAR szPath ) : DMConfigItem (szPath ) 343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby m_eAction = SYNCML_DM_EVENT_NONE; 363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby m_nType = SYNCML_DM_EVENT_NODE; 373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T 423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMSubscriptionItem::Set(const DmtEventSubscription & pItem) 433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return DmtEventSubscription::Set(pItem.GetAction(), 453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby pItem.GetType(), 463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby pItem.GetTopic(), 473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby pItem.GetPrincipals(TRUE), 483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby pItem.GetPrincipals(FALSE)); 493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T 543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMSubscriptionItem::Set(CPCHAR szPath, 553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby CPCHAR szConfig, 563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby const DMMap<INT32, DMString>& aDict) 573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby SYNCML_DM_RET_STATUS_T dm_stat = SYNCML_DM_SUCCESS; 593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby XPL_LOG_DM_TMN_Debug(("Parse subscription=%s for path =%s\n", szConfig,szPath)); 613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby dm_stat = DMConfigItem::Set(szPath); 623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( dm_stat != SYNCML_DM_SUCCESS ) 633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return dm_stat; 643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby DMToken oParser(FALSE,szConfig,'&'); 673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby CPCHAR pCommand = NULL; 683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby while ( (pCommand = oParser.nextSegment()) != NULL ) 703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby SYNCML_DM_EVENT_ACTION_T nAction = SYNCML_DM_EVENT_NONE; 733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby SYNCML_DM_EVENT_TYPE_T nType = SYNCML_DM_EVENT_NODE; 743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( DmStrcmp(pCommand,"A") == 0 ) 773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby nAction = SYNCML_DM_EVENT_ADD; 783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby else if ( DmStrcmp(pCommand,"D") ==0 ) 793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby nAction = SYNCML_DM_EVENT_DELETE; 803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby else if ( DmStrcmp(pCommand,"I") == 0 ) 813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby nAction = SYNCML_DM_EVENT_INDIRECT; 823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby else if ( DmStrcmp(pCommand,"R") == 0 ) 833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby nAction = SYNCML_DM_EVENT_REPLACE | SYNCML_DM_EVENT_RENAME; 843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby else if (DmStrcmp(pCommand,"N") == 0 ) 853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby nType = SYNCML_DM_EVENT_NODE; 863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby else if ( DmStrcmp(pCommand,"C") == 0 ) 873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby nType = SYNCML_DM_EVENT_CUMULATIVE; 883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby else if ( DmStrcmp(pCommand,"F") == 0 ) 893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby nType = SYNCML_DM_EVENT_DETAIL; 903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby else 913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby dm_stat = ParseSegment(pCommand,aDict); 933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( dm_stat != SYNCML_DM_SUCCESS ) 943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return dm_stat; 953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby continue; 963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby m_eAction |= nAction; 993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby m_nType = nType; 1003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 1023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SYNCML_DM_SUCCESS; 1043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 1063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T 1103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMSubscriptionItem::ParseSegment(CPCHAR szSegment, 1113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby const DMMap<INT32, DMString>& aDict) 1123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 1133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby DMParser oParser(szSegment,'='); 1143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby CPCHAR pKeyWord = oParser.nextSegment(); 1153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby CPCHAR pValue = oParser.nextSegment(); 1163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( pKeyWord == NULL || pValue == NULL ) 1183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SYNCML_DM_FAIL; 1193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( DmStrcmp(pKeyWord,"P") == 0 ) 1213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby ParsePrincipal(pValue,TRUE,aDict); 1223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby else 1233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( DmStrcmp(pKeyWord,"S") == 0 ) 1243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby ParsePrincipal(pValue,FALSE,aDict); 1253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby else 1263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( DmStrcmp(pKeyWord,"T") == 0 ) 1273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby m_strTopic = pValue; 1283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SYNCML_DM_SUCCESS; 1303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 1313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T 1343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMSubscriptionItem::ParsePrincipal(CPCHAR szSegment, 1353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby BOOLEAN bIsIgnore, 1363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby const DMMap<INT32, DMString>& aDict ) 1373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 1383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby DMToken oParser(FALSE,szSegment,'+'); 1393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby CPCHAR pSegment = NULL; 1403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby while ( (pSegment = oParser.nextSegment()) != NULL ) 1423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 1433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby DMString strPrincipal; 1443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( aDict.lookup(DmAtoi(pSegment), strPrincipal) ) 1453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 1463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( bIsIgnore == TRUE ) 1473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby m_aIgnorePrincipals.push_back(DmtPrincipal(strPrincipal)); 1483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby else 1493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby m_aNotifyPrincipals.push_back(DmtPrincipal(strPrincipal)); 1503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 1513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby else 1523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 1533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby XPL_LOG_DM_TMN_Error(("event file format error - unknown id %s\n \n", pSegment)); 1543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SYNCML_DM_FAIL; 1553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 1563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 1573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SYNCML_DM_SUCCESS; 1593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 1613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T 1663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMSubscriptionItem::Serialize( DMFileHandler& dmf, 1673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby const DMMap<DMString, INT32>& aDict ) 1683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 1693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby SYNCML_DM_EVENT_ACTION_T nAction[4] = {SYNCML_DM_EVENT_ADD, 1713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby SYNCML_DM_EVENT_DELETE, 1723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby SYNCML_DM_EVENT_REPLACE, 1733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby SYNCML_DM_EVENT_INDIRECT}; 1743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby SYNCML_DM_EVENT_TYPE_T nType[3] = { SYNCML_DM_EVENT_NODE, 1763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby SYNCML_DM_EVENT_CUMULATIVE, 1773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby SYNCML_DM_EVENT_DETAIL}; 1783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby CPCHAR szEvent[4] = {"A", "D", "R", "I"}; 1813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby CPCHAR szEventDetail[3] = { "N", "C", "F"}; 1823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby UINT8 index; 1833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby SYNCML_DM_RET_STATUS_T dm_stat =SYNCML_DM_SUCCESS; 1853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby dm_stat = DMConfigItem::Serialize(dmf); 1863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( dm_stat != SYNCML_DM_SUCCESS ) 1873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return dm_stat; 1883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby DMString str = ""; 1903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby for (index = 0; index < DIM(nAction); index++ ) 1913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 1923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( IsEnabled(nAction[index],NULL) ) 1933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby AttachProperty( str, '&', szEvent[index] ); 1943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 1953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby for (index = 0; index < DIM(nType); index++ ) 1963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 1973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( m_nType == nType[index] ) 1983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 1993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby AttachProperty( str, '&', szEventDetail[index] ); 2003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby break; 2013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 2023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 2033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby DMString strProperty; 2053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( m_strTopic != NULL ) 2063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 2073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby strProperty = "T=" + m_strTopic; 2083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby AttachProperty(str, '&', strProperty); 2093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 2103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( m_aIgnorePrincipals.size() ) 2123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 2133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby DMConfigItem::CreateProperty( m_aIgnorePrincipals, "P=",aDict,strProperty); 2143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby AttachProperty(str, '&', strProperty); 2153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 2163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( m_aNotifyPrincipals.size() ) 2183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 2193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby DMConfigItem::CreateProperty( m_aNotifyPrincipals, "S=",aDict,strProperty); 2203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby AttachProperty(str, '&', strProperty); 2213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 2223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( str.empty() ) 2243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SYNCML_DM_SUCCESS; 2253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( dmf.write(str.c_str(), str.length()) != SYNCML_DM_SUCCESS || 2273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby dmf.write( "\n", 1 )!= SYNCML_DM_SUCCESS ) 2283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SYNCML_DM_IO_FAILURE; 2293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SYNCML_DM_SUCCESS; 2313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 2323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambyvoid DMSubscriptionItem::UpdateDictionary( DMMap<DMString, INT32>& aDict ) 2353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 2363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby DMVector<DmtPrincipal> aPrincipals; 2373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby INT32 iDummy = 0; 2383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby INT32 index=0; 2393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby for (index=0; index<m_aIgnorePrincipals.size(); index++) 2413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 2423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( !aDict.lookup( m_aIgnorePrincipals[index].getName(), iDummy ) ){ 2433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby aDict.put( m_aIgnorePrincipals[index].getName(), aDict.size() + 1); 2443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 2453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 2463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby for (index=0; index<m_aNotifyPrincipals.size(); index++) 2483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 2493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( !aDict.lookup(m_aNotifyPrincipals[index].getName(), iDummy ) ){ 2503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby aDict.put( m_aNotifyPrincipals[index].getName(), aDict.size() + 1); 2513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 2523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 2533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 254