28 #include <SmlDataFormat.h> |
28 #include <SmlDataFormat.h> |
29 |
29 |
30 #include "NSmlAdapterLog.h" |
30 #include "NSmlAdapterLog.h" |
31 #include "nsmldshostconstants.h" |
31 #include "nsmldshostconstants.h" |
32 #include "Nsmldshostserver.h" |
32 #include "Nsmldshostserver.h" |
33 #include "Nsmldshostsessioncanceleventhandler.h" |
|
34 #include "Nsmldshostsessioncancel.h" |
|
35 #include "Nsmldshostsession.h" |
33 #include "Nsmldshostsession.h" |
36 #include "nsmldsdpinformation.h" |
34 #include "nsmldsdpinformation.h" |
37 #include "Nsmldsdataproviderarray.h" |
35 #include "Nsmldsdataproviderarray.h" |
38 |
36 |
39 #ifdef __HOST_SERVER_MTEST__ |
37 #ifdef __HOST_SERVER_MTEST__ |
174 { |
172 { |
175 _DBG_FILE( "CNSmlDSHostSession::~CNSmlDSHostSession(): begin" ); |
173 _DBG_FILE( "CNSmlDSHostSession::~CNSmlDSHostSession(): begin" ); |
176 iMemPtr.iChunk.Close(); |
174 iMemPtr.iChunk.Close(); |
177 iDataProviders.ResetAndDestroy(); |
175 iDataProviders.ResetAndDestroy(); |
178 iStringPool.Close(); |
176 iStringPool.Close(); |
179 if(iDsoDeleteAll) |
|
180 { |
|
181 delete iDsoDeleteAll; |
|
182 iDsoDeleteAll = NULL; |
|
183 } |
|
184 if(iCancelEventHandler) |
|
185 { |
|
186 delete iCancelEventHandler; |
|
187 iCancelEventHandler = NULL; |
|
188 } |
|
189 REComSession::FinalClose(); |
177 REComSession::FinalClose(); |
190 iServer.DecSessionCount(); |
178 iServer.DecSessionCount(); |
191 _DBG_FILE( "CNSmlDSHostSession::~CNSmlDSHostSession(): end" ); |
179 _DBG_FILE( "CNSmlDSHostSession::~CNSmlDSHostSession(): end" ); |
192 } |
180 } |
193 |
181 |
420 // ------------------------------------------------------------------------------------------------ |
408 // ------------------------------------------------------------------------------------------------ |
421 void CNSmlDSHostSession::ConstructL() |
409 void CNSmlDSHostSession::ConstructL() |
422 { |
410 { |
423 _DBG_FILE( "CNSmlDSHostSession::ConstructL(): begin" ); |
411 _DBG_FILE( "CNSmlDSHostSession::ConstructL(): begin" ); |
424 iStringPool.OpenL(); |
412 iStringPool.OpenL(); |
425 iDsoDeleteAll = NULL; |
|
426 iCancelEventHandler = NULL; |
|
427 _DBG_FILE( "CNSmlDSHostSession::ConstructL(): end" ); |
413 _DBG_FILE( "CNSmlDSHostSession::ConstructL(): end" ); |
428 } |
414 } |
429 |
415 |
430 |
416 |
431 // ------------------------------------------------------------------------------------------------ |
417 // ------------------------------------------------------------------------------------------------ |
867 { |
853 { |
868 User::Leave( KErrAlreadyExists ); |
854 User::Leave( KErrAlreadyExists ); |
869 } |
855 } |
870 |
856 |
871 CNSmlDSAsyncCallBackForOpen* p = new ( ELeave ) CNSmlDSAsyncCallBackForOpen( |
857 CNSmlDSAsyncCallBackForOpen* p = new ( ELeave ) CNSmlDSAsyncCallBackForOpen( |
872 this, aMessage, OpenFinishedL ); |
858 this, aMessage, &CNSmlDSHostSession::OpenFinishedL ); |
873 CleanupStack::PushL( p ); |
859 CleanupStack::PushL( p ); |
874 |
860 |
875 p->iDpi = DataProviderItemL( aMessage.Int0() ); |
861 p->iDpi = DataProviderItemL( aMessage.Int0() ); |
876 CSmlDataProvider* dp = p->iDpi->iDataprovider; |
862 CSmlDataProvider* dp = p->iDpi->iDataprovider; |
877 TMemPtr& memptr( MemPtrL() ); |
863 TMemPtr& memptr( MemPtrL() ); |
1036 TNSmlDSDataStoreElement* dsi = DataStoreItemL( aMessage ); |
1022 TNSmlDSDataStoreElement* dsi = DataStoreItemL( aMessage ); |
1037 |
1023 |
1038 RArray<TInt>* resultArray = new ( ELeave ) RArray<TInt>; |
1024 RArray<TInt>* resultArray = new ( ELeave ) RArray<TInt>; |
1039 CleanupStack::PushL( resultArray ); |
1025 CleanupStack::PushL( resultArray ); |
1040 CNSmlDSAsyncCallBack* dsao = new ( ELeave ) CNSmlDSAsyncCallBack( |
1026 CNSmlDSAsyncCallBack* dsao = new ( ELeave ) CNSmlDSAsyncCallBack( |
1041 this, dsi, aMessage, CommitBatchRequestFinishedL, resultArray ); |
1027 this, dsi, aMessage, &CNSmlDSHostSession::CommitBatchRequestFinishedL, resultArray ); |
1042 CleanupStack::Pop( resultArray ); //dsao takes ownership |
1028 CleanupStack::Pop( resultArray ); //dsao takes ownership |
1043 |
1029 |
1044 CleanupStack::PushL( dsao ); |
1030 CleanupStack::PushL( dsao ); |
1045 dsao->CallDSAsyncLC().CommitBatchL( *resultArray, dsao->iStatus ); |
1031 dsao->CallDSAsyncLC().CommitBatchL( *resultArray, dsao->iStatus ); |
1046 CleanupStack::Pop( 2 ); //CallDSAsyncLC(), dsao |
1032 CleanupStack::Pop( 2 ); //CallDSAsyncLC(), dsao |
1174 { |
1160 { |
1175 TNSmlDSDataStoreElement* dsi = DataStoreItemL( aMessage ); |
1161 TNSmlDSDataStoreElement* dsi = DataStoreItemL( aMessage ); |
1176 CNSmlServerDSHostItem* dshi = DataStoreItemParamsLC(); |
1162 CNSmlServerDSHostItem* dshi = DataStoreItemParamsLC(); |
1177 |
1163 |
1178 CNSmlDSAsyncCallBack* dsao = new ( ELeave ) CNSmlDSAsyncCallBack( |
1164 CNSmlDSAsyncCallBack* dsao = new ( ELeave ) CNSmlDSAsyncCallBack( |
1179 this, dsi, aMessage, OpenItemRequestFinishedL, dshi ); |
1165 this, dsi, aMessage, &CNSmlDSHostSession::OpenItemRequestFinishedL, dshi ); |
1180 CleanupStack::Pop( dshi ); //dsao takes ownership |
1166 CleanupStack::Pop( dshi ); //dsao takes ownership |
1181 CleanupStack::PushL( dsao ); |
1167 CleanupStack::PushL( dsao ); |
1182 |
1168 |
1183 dsao->CallDSAsyncLC().OpenItemL( |
1169 dsao->CallDSAsyncLC().OpenItemL( |
1184 dshi->Uid(), dshi->FieldChange(), dshi->Size(), dshi->ParentUid(), |
1170 dshi->Uid(), dshi->FieldChange(), dshi->Size(), dshi->ParentUid(), |
1256 void CNSmlDSHostSession::CreateItemL( const RMessage2& aMessage ) |
1242 void CNSmlDSHostSession::CreateItemL( const RMessage2& aMessage ) |
1257 { |
1243 { |
1258 TNSmlDSDataStoreElement* dsi = DataStoreItemL( aMessage ); |
1244 TNSmlDSDataStoreElement* dsi = DataStoreItemL( aMessage ); |
1259 CNSmlServerDSHostItem* dshi = DataStoreItemParamsLC(); |
1245 CNSmlServerDSHostItem* dshi = DataStoreItemParamsLC(); |
1260 CNSmlDSAsyncCallBack* dsao = new ( ELeave ) CNSmlDSAsyncCallBack( |
1246 CNSmlDSAsyncCallBack* dsao = new ( ELeave ) CNSmlDSAsyncCallBack( |
1261 this, dsi, aMessage, CreateItemRequestFinishedL, dshi ); |
1247 this, dsi, aMessage, &CNSmlDSHostSession::CreateItemRequestFinishedL, dshi ); |
1262 CleanupStack::Pop( dshi ); //dsao takes ownership |
1248 CleanupStack::Pop( dshi ); //dsao takes ownership |
1263 CleanupStack::PushL( dsao ); |
1249 CleanupStack::PushL( dsao ); |
1264 |
1250 |
1265 TSmlDbItemUid* uid = NULL; |
1251 TSmlDbItemUid* uid = NULL; |
1266 |
1252 |
1393 void CNSmlDSHostSession::CommitItemL( const RMessage2& aMessage ) |
1379 void CNSmlDSHostSession::CommitItemL( const RMessage2& aMessage ) |
1394 { |
1380 { |
1395 TNSmlDSDataStoreElement* dsi = DataStoreItemL( aMessage ); |
1381 TNSmlDSDataStoreElement* dsi = DataStoreItemL( aMessage ); |
1396 |
1382 |
1397 CNSmlDSAsyncCallBack* dsao = new ( ELeave ) CNSmlDSAsyncCallBack( |
1383 CNSmlDSAsyncCallBack* dsao = new ( ELeave ) CNSmlDSAsyncCallBack( |
1398 this, dsi, aMessage, CommitItemRequestFinishedL ); |
1384 this, dsi, aMessage, &CNSmlDSHostSession::CommitItemRequestFinishedL ); |
1399 CleanupStack::PushL( dsao ); |
1385 CleanupStack::PushL( dsao ); |
1400 dsao->CallDSAsyncLC().CommitItemL( dsao->iStatus ); |
1386 dsao->CallDSAsyncLC().CommitItemL( dsao->iStatus ); |
1401 CleanupStack::Pop(2); //CallDSAsyncLC, dsao |
1387 CleanupStack::Pop(2); //CallDSAsyncLC, dsao |
1402 } |
1388 } |
1403 |
1389 |
1498 // CNSmlDSHostSession::DeleteAllItemsL |
1484 // CNSmlDSHostSession::DeleteAllItemsL |
1499 // Deletes all items at Data Store permanently. |
1485 // Deletes all items at Data Store permanently. |
1500 // ------------------------------------------------------------------------------------------------ |
1486 // ------------------------------------------------------------------------------------------------ |
1501 void CNSmlDSHostSession::DeleteAllItemsL( const RMessage2& aMessage ) |
1487 void CNSmlDSHostSession::DeleteAllItemsL( const RMessage2& aMessage ) |
1502 { |
1488 { |
1503 //Create cancel event handler |
|
1504 iCancelEventHandler = CNSmlHostSessionCancel::NewL(this); |
|
1505 TNSmlDSDataStoreElement* dsi = DataStoreItemL( aMessage ); |
1489 TNSmlDSDataStoreElement* dsi = DataStoreItemL( aMessage ); |
1506 CNSmlDSAsyncCallBack* dsao = new ( ELeave ) CNSmlDSAsyncCallBack( this, dsi, aMessage, DeleteAllFinishedL ); |
1490 CNSmlDSAsyncCallBack* dsao = new ( ELeave ) CNSmlDSAsyncCallBack( this, dsi, aMessage ); |
1507 CleanupStack::PushL( dsao ); |
1491 CleanupStack::PushL( dsao ); |
1508 dsao->CallDSAsyncLC().DeleteAllItemsL( dsao->iStatus ); |
1492 dsao->CallDSAsyncLC().DeleteAllItemsL( dsao->iStatus ); |
1509 CleanupStack::Pop(2); //CallDSAsyncLC(), dsao |
1493 CleanupStack::Pop(2); //CallDSAsyncLC(), dsao |
1510 iDsoDeleteAll = dsao; |
|
1511 } |
1494 } |
1512 |
1495 |
1513 // ------------------------------------------------------------------------------------------------ |
1496 // ------------------------------------------------------------------------------------------------ |
1514 // CNSmlDSHostSession::HasSyncHistoryL |
1497 // CNSmlDSHostSession::HasSyncHistoryL |
1515 // Checks if the Data Store has sync history. If not then slow sync is proposed to Sync Partner. |
1498 // Checks if the Data Store has sync history. If not then slow sync is proposed to Sync Partner. |
1637 void CNSmlDSHostSession::AllItemsL( const RMessage2& aMessage ) |
1620 void CNSmlDSHostSession::AllItemsL( const RMessage2& aMessage ) |
1638 { |
1621 { |
1639 TNSmlDSDataStoreElement* dsi = DataStoreItemL( aMessage ); |
1622 TNSmlDSDataStoreElement* dsi = DataStoreItemL( aMessage ); |
1640 |
1623 |
1641 CNSmlDSChangedItemsFetcher* dsao = CNSmlDSChangedItemsFetcher::NewLC( |
1624 CNSmlDSChangedItemsFetcher* dsao = CNSmlDSChangedItemsFetcher::NewLC( |
1642 this, dsi, aMessage, AllItemsRequestFinishedL ); |
1625 this, dsi, aMessage, &CNSmlDSHostSession::AllItemsRequestFinishedL ); |
1643 dsao->FetchAllChangedItemsL(); |
1626 dsao->FetchAllChangedItemsL(); |
1644 CleanupStack::Pop(); //dsao |
1627 CleanupStack::Pop(); //dsao |
1645 } |
1628 } |
1646 |
1629 |
1647 // ------------------------------------------------------------------------------------------------ |
1630 // ------------------------------------------------------------------------------------------------ |
1688 RReadStream& readStream = ptr.ReadStreamLC(); |
1671 RReadStream& readStream = ptr.ReadStreamLC(); |
1689 dius->InternalizeL( readStream ); |
1672 dius->InternalizeL( readStream ); |
1690 CleanupStack::PopAndDestroy(); //readStream |
1673 CleanupStack::PopAndDestroy(); //readStream |
1691 |
1674 |
1692 CNSmlDSAsyncCallBack* dsao = new ( ELeave ) CNSmlDSAsyncCallBack( |
1675 CNSmlDSAsyncCallBack* dsao = new ( ELeave ) CNSmlDSAsyncCallBack( |
1693 this, dsi, aMessage, CommitChangesRequestFinishedL, dius ); |
1676 this, dsi, aMessage, &CNSmlDSHostSession::CommitChangesRequestFinishedL, dius ); |
1694 CleanupStack::Pop( dius ); //dsao takes the ownership. |
1677 CleanupStack::Pop( dius ); //dsao takes the ownership. |
1695 CleanupStack::PushL( dsao ); |
1678 CleanupStack::PushL( dsao ); |
1696 dsao->CallDSAsyncLC().CommitChangeInfoL( dsao->iStatus, *dius ); |
1679 dsao->CallDSAsyncLC().CommitChangeInfoL( dsao->iStatus, *dius ); |
1697 CleanupStack::Pop(2); //CallDSAsyncLC(), dsao |
1680 CleanupStack::Pop(2); //CallDSAsyncLC(), dsao |
1698 } |
1681 } |
1906 wStream.WriteL( *aSb->iRead ); |
1889 wStream.WriteL( *aSb->iRead ); |
1907 wStream.CommitL(); |
1890 wStream.CommitL(); |
1908 CleanupStack::PopAndDestroy(); //wStream |
1891 CleanupStack::PopAndDestroy(); //wStream |
1909 } |
1892 } |
1910 |
1893 |
1911 // ------------------------------------------------------------------------------------------------ |
|
1912 // CNSmlDSHostSession::HandleCancelEventL |
|
1913 // called when user canceled the operation |
|
1914 // ------------------------------------------------------------------------------------------------ |
|
1915 void CNSmlDSHostSession::HandleCancelEventL() |
|
1916 { |
|
1917 if(iCancelEventHandler) |
|
1918 { |
|
1919 iDsoDeleteAll->Cancel(); |
|
1920 } |
|
1921 } |
|
1922 |
|
1923 // ------------------------------------------------------------------------------------------------ |
|
1924 // CNSmlDSHostSession::DeleteAllFinishedL |
|
1925 // called when DeleteAll request is finished. |
|
1926 // Note! when aOperation is CNSmlDSAsyncCallBack::ECanceled or CNSmlDSAsyncCallBack::EFree, |
|
1927 // aDSAO->iDSItem might be NULL. |
|
1928 // ------------------------------------------------------------------------------------------------ |
|
1929 TInt CNSmlDSHostSession::DeleteAllFinishedL( CNSmlDSAsyncCallBack* aDSAO, TCallBackOperation aOperation ) |
|
1930 { |
|
1931 TInt err( aDSAO->iStatus.Int() ); |
|
1932 |
|
1933 switch( aOperation ) |
|
1934 { |
|
1935 case CNSmlDSAsyncCallBack::EFinished: |
|
1936 case CNSmlDSAsyncCallBack::ECanceled: |
|
1937 case CNSmlDSAsyncCallBack::EFree: |
|
1938 { |
|
1939 if(iCancelEventHandler) |
|
1940 { |
|
1941 delete iCancelEventHandler; |
|
1942 iCancelEventHandler = NULL; |
|
1943 iDsoDeleteAll = NULL; |
|
1944 } |
|
1945 break; |
|
1946 } |
|
1947 default: |
|
1948 User::Leave( KErrUnknown ); |
|
1949 }; |
|
1950 |
|
1951 return err; |
|
1952 } |
|
1953 // End of File |
1894 // End of File |