22 #include <mmf/common/mmfcontrollerpluginresolver.h> |
22 #include <mmf/common/mmfcontrollerpluginresolver.h> |
23 |
23 |
24 #include "sconsbeclient.h" |
24 #include "sconsbeclient.h" |
25 #include "debug.h" |
25 #include "debug.h" |
26 |
26 |
27 |
27 const TInt KDataBufExpandSize( 1024 ); |
|
28 const TInt KMaxObjectSize( 1048576 - 1024 ); // Max chunk size is 1MB, but give some space for ConML wbxml |
28 _LIT( KSConNoDrive, "\x0" ); |
29 _LIT( KSConNoDrive, "\x0" ); |
29 _LIT( KSConDriveExists, "\x1" ); |
30 _LIT( KSConDriveExists, "\x1" ); |
30 // ============================= MEMBER FUNCTIONS ============================== |
31 // ============================= MEMBER FUNCTIONS ============================== |
31 |
32 |
32 // ----------------------------------------------------------------------------- |
33 // ----------------------------------------------------------------------------- |
33 // CSConSBEClient::NewL( cosnt TInt aMaxObjectSize ) |
34 // CSConSBEClient::NewL( cosnt TInt aMaxObjectSize ) |
34 // Two-phase constructor |
35 // Two-phase constructor |
35 // ----------------------------------------------------------------------------- |
36 // ----------------------------------------------------------------------------- |
36 // |
37 // |
37 CSConSBEClient* CSConSBEClient::NewL( const TInt aMaxObjectSize, RFs& aFs ) |
38 CSConSBEClient* CSConSBEClient::NewL( RFs& aFs ) |
38 { |
39 { |
39 TRACE_FUNC; |
40 TRACE_FUNC; |
40 CSConSBEClient* self = new (ELeave) CSConSBEClient( aMaxObjectSize, aFs ); |
41 CSConSBEClient* self = new (ELeave) CSConSBEClient( aFs ); |
41 return self; |
42 return self; |
42 } |
43 } |
43 |
44 |
44 // ----------------------------------------------------------------------------- |
45 // ----------------------------------------------------------------------------- |
45 // CSConSBEClient::CSConSBEClient( const TInt aMaxObjectSize ) |
46 // CSConSBEClient::CSConSBEClient( const TInt aMaxObjectSize ) |
46 // Constructor |
47 // Constructor |
47 // ----------------------------------------------------------------------------- |
48 // ----------------------------------------------------------------------------- |
48 // |
49 // |
49 CSConSBEClient::CSConSBEClient( const TInt aMaxObjectSize, RFs& aFs ) : |
50 CSConSBEClient::CSConSBEClient( RFs& aFs ) : |
50 CActive( EPriorityStandard ), iSBEClient(NULL), |
51 CActive( EPriorityStandard ), iBURModeNormal( ETrue ), iFs( aFs ) |
51 iProcessComplete(EFalse), iProcessIndex( 0 ), iDataPos( 0 ), |
52 { |
52 iDataLeft( EFalse ), iBURModeNormal( ETrue ), |
53 CActiveScheduler::Add( this ); |
53 iRestoreMode( EFalse ), iFs( aFs ) |
|
54 { |
|
55 iMaxObjectSize = aMaxObjectSize; |
|
56 } |
54 } |
57 |
55 |
58 // ----------------------------------------------------------------------------- |
56 // ----------------------------------------------------------------------------- |
59 // CSConSBEClient::~CSConSBEClient() |
57 // CSConSBEClient::~CSConSBEClient() |
60 // Initializes member data |
58 // Initializes member data |
61 // ----------------------------------------------------------------------------- |
59 // ----------------------------------------------------------------------------- |
62 // |
60 // |
63 CSConSBEClient::~CSConSBEClient() |
61 CSConSBEClient::~CSConSBEClient() |
64 { |
62 { |
65 TRACE_FUNC_ENTRY; |
63 TRACE_FUNC_ENTRY; |
|
64 Cancel(); |
66 TInt err( KErrNone ); |
65 TInt err( KErrNone ); |
67 |
66 |
68 if( !iBURModeNormal && iSBEClient ) |
67 if( !iBURModeNormal && iSBEClient ) |
69 { |
68 { |
70 TDriveList driveList; |
69 TDriveList driveList; |
261 { |
262 { |
262 case ESetBURMode : |
263 case ESetBURMode : |
263 LOGGER_WRITE( "CSConSBEClient::RunL() : ESetBURMode" ); |
264 LOGGER_WRITE( "CSConSBEClient::RunL() : ESetBURMode" ); |
264 TRAP( err, ProcessSetBURModeL() ); |
265 TRAP( err, ProcessSetBURModeL() ); |
265 LOGGER_WRITE_1( "CSConSBEClient::RunL() : ProcessSetBURModeL() : returned %d", err ); |
266 LOGGER_WRITE_1( "CSConSBEClient::RunL() : ProcessSetBURModeL() : returned %d", err ); |
266 HandleSBEErrorL( err ); |
|
267 User::RequestComplete( iCallerStatus, err ); |
|
268 break; |
267 break; |
269 case EListPublicFiles : |
268 case EListPublicFiles : |
270 LOGGER_WRITE( "CSConSBEClient::RunL() : EListPublicFiles" ); |
269 LOGGER_WRITE( "CSConSBEClient::RunL() : EListPublicFiles" ); |
271 TRAP( err, ProcessListPublicFilesL() ); |
270 TRAP( err, ProcessListPublicFilesL() ); |
272 LOGGER_WRITE_1( "CSConSBEClient::RunL() : ProcessListPublicFilesL() : returned %d", err ); |
271 LOGGER_WRITE_1( "CSConSBEClient::RunL() : ProcessListPublicFilesL() : returned %d", err ); |
273 HandleSBEErrorL( err ); |
|
274 User::RequestComplete( iCallerStatus, err ); |
|
275 break; |
272 break; |
276 case EListDataOwners : |
273 case EListDataOwners : |
277 LOGGER_WRITE( "CSConSBEClient::RunL() : EListDataOwners" ); |
274 LOGGER_WRITE( "CSConSBEClient::RunL() : EListDataOwners" ); |
278 TRAP( err, ProcessListDataOwnersL() ); |
275 TRAP( err, ProcessListDataOwnersL() ); |
279 LOGGER_WRITE_1( "CSConSBEClient::RunL() : ProcessListDataOwnersL() : returned %d", err ); |
276 LOGGER_WRITE_1( "CSConSBEClient::RunL() : ProcessListDataOwnersL() : returned %d", err ); |
280 HandleSBEErrorL( err ); |
|
281 User::RequestComplete( iCallerStatus, err ); |
|
282 break; |
277 break; |
283 case EGetDataSize : |
278 case EGetDataSize : |
284 LOGGER_WRITE( "CSConSBEClient::RunL() : EGetDataSize" ); |
279 LOGGER_WRITE( "CSConSBEClient::RunL() : EGetDataSize" ); |
285 TRAP( err, ProcessGetDataSizeL() ); |
280 TRAP( err, ProcessGetDataSizeL() ); |
286 LOGGER_WRITE_1( "CSConSBEClient::RunL() : ProcessGetDataSizeL() : returned %d", err ); |
281 LOGGER_WRITE_1( "CSConSBEClient::RunL() : ProcessGetDataSizeL() : returned %d", err ); |
287 HandleSBEErrorL( err ); |
|
288 User::RequestComplete( iCallerStatus, err ); |
|
289 break; |
282 break; |
290 case ERequestData : |
283 case ERequestData : |
291 LOGGER_WRITE( "CSConSBEClient::RunL() : ERequestData" ); |
284 LOGGER_WRITE( "CSConSBEClient::RunL() : ERequestData" ); |
292 TRAP( err, ret = ProcessRequestDataL() ); |
285 TRAP( err, ret = ProcessRequestDataL() ); |
293 LOGGER_WRITE_1( "CSConSBEClient::RunL() : ProcessRequestDataL() : returned %d", err ); |
286 LOGGER_WRITE_1( "CSConSBEClient::RunL() : ProcessRequestDataL() : returned %d", err ); |
294 HandleSBEErrorL( err ); |
|
295 |
|
296 if( err == KErrNone ) |
|
297 { |
|
298 err = ret; |
|
299 } |
|
300 |
|
301 User::RequestComplete( iCallerStatus, err ); |
|
302 break; |
287 break; |
303 case EGetDataOwnerStatus : |
288 case EGetDataOwnerStatus : |
304 LOGGER_WRITE( "CSConSBEClient::RunL() : EGetDataOwnerStatus" ); |
289 LOGGER_WRITE( "CSConSBEClient::RunL() : EGetDataOwnerStatus" ); |
305 TRAP( err, ProcessGetDataOwnerStatusL() ); |
290 TRAP( err, ProcessGetDataOwnerStatusL() ); |
306 LOGGER_WRITE_1( "CSConSBEClient::RunL() : ProcessGetDataOwnerStatusL() : returned %d", err ); |
291 LOGGER_WRITE_1( "CSConSBEClient::RunL() : ProcessGetDataOwnerStatusL() : returned %d", err ); |
307 HandleSBEErrorL( err ); |
|
308 User::RequestComplete( iCallerStatus, err ); |
|
309 break; |
292 break; |
310 case ESupplyData : |
293 case ESupplyData : |
311 LOGGER_WRITE( "CSConSBEClient::RunL() : ESupplyData" ); |
294 LOGGER_WRITE( "CSConSBEClient::RunL() : ESupplyData" ); |
312 TRAP( err, ret = ProcessSupplyDataL() ); |
295 TRAP( err, ret = ProcessSupplyDataL() ); |
313 LOGGER_WRITE_1( "CSConSBEClient::RunL() : SupplyDataL() : returned %d", err ); |
296 LOGGER_WRITE_1( "CSConSBEClient::RunL() : SupplyDataL() : returned %d", err ); |
314 HandleSBEErrorL( err ); |
|
315 |
|
316 if( err == KErrNone ) |
|
317 { |
|
318 err = ret; |
|
319 } |
|
320 |
|
321 User::RequestComplete( iCallerStatus, err ); |
|
322 break; |
297 break; |
323 default : |
298 default : |
|
299 err = KErrNotSupported; |
324 LOGGER_WRITE( "CSConSBEClient::RunL() : ERROR! Unknown!" ); |
300 LOGGER_WRITE( "CSConSBEClient::RunL() : ERROR! Unknown!" ); |
325 break; |
301 break; |
326 } |
302 } |
|
303 |
|
304 if ( err ) |
|
305 { |
|
306 HandleSBEErrorL( err ); |
|
307 } |
|
308 else |
|
309 { |
|
310 err = ret; |
|
311 } |
|
312 User::RequestComplete( iCallerStatus, err ); |
327 |
313 |
328 TRACE_FUNC_EXIT; |
314 TRACE_FUNC_EXIT; |
329 } |
315 } |
330 |
316 |
331 // ----------------------------------------------------------------------------- |
317 // ----------------------------------------------------------------------------- |
919 else if( !iCurrentTask->iRequestDataParams->iDataOwner->iJavaHash ) |
916 else if( !iCurrentTask->iRequestDataParams->iDataOwner->iJavaHash ) |
920 { |
917 { |
921 sid = iCurrentTask->iRequestDataParams->iDataOwner->iUid; |
918 sid = iCurrentTask->iRequestDataParams->iDataOwner->iUid; |
922 LOGGER_WRITE_1("CSConSBEClient::ProcessRequestDataL() sid: 0x%08x", sid.iId); |
919 LOGGER_WRITE_1("CSConSBEClient::ProcessRequestDataL() sid: 0x%08x", sid.iId); |
923 } |
920 } |
924 |
921 |
925 CSBPackageTransferType* ptt( NULL ); |
922 |
926 CSBSIDTransferType* stt( NULL ); |
|
927 CSBJavaTransferType* jtt( NULL ); |
|
928 |
|
929 LOGGER_WRITE_1( "CSConSBEClient::ProcessRequestDataL() : \ |
|
930 Begin - Data left: %d", iDataLeft ); |
|
931 LOGGER_WRITE_1( "CSConSBEClient::ProcessRequestDataL() : \ |
923 LOGGER_WRITE_1( "CSConSBEClient::ProcessRequestDataL() : \ |
932 Begin - Package data: %d", packageData ); |
924 Begin - Package data: %d", packageData ); |
933 LOGGER_WRITE_1( "CSConSBEClient::ProcessRequestDataL() : \ |
925 |
934 Begin - iDataPos: %d", iDataPos ); |
926 LOGGER_WRITE_1("iLastChunk: %d", (TInt) iLastChunk ); |
935 |
927 LOGGER_WRITE_1("iDataBufferSize: %d", iDataBufferSize ); |
936 //Are there old data left to be transfered? |
928 |
937 if( !iDataLeft ) |
929 // if was't last chunk and there are free space left on our packet |
|
930 if( !iLastChunk && iDataBufferSize < KMaxObjectSize ) |
938 { |
931 { |
939 //No data left, request more from the server |
932 //No data left, request more from the server |
940 if( packageData && !iCurrentTask->iRequestDataParams->iDataOwner->iJavaHash ) |
933 if( packageData && !iCurrentTask->iRequestDataParams->iDataOwner->iJavaHash ) |
941 { |
934 { |
942 ptt = CSBPackageTransferType::NewL( uid, driveNumber, |
935 CSBPackageTransferType* ptt = CSBPackageTransferType::NewL( |
943 packageDataType ); |
936 uid, driveNumber, packageDataType ); |
944 CleanupStack::PushL( ptt ); |
937 CleanupStack::PushL( ptt ); |
945 LOGGER_WRITE( "iSBEClient->RequestDataL( ptt ) : start" ); |
938 |
946 TRequestStatus status; |
939 RequestDataL( *ptt ); |
947 iSBEClient->RequestDataL( *ptt, status ); |
940 |
948 User::WaitForRequest( status ); |
|
949 LOGGER_WRITE( "iSBEClint->RequestDataL( ptt ) : stop" ); |
|
950 |
|
951 LOGGER_WRITE_1( "CSConSBEClient::ProcessRequestDataL() : status.Int() %d", status.Int() ); |
|
952 User::LeaveIfError( status.Int() ); |
|
953 |
|
954 //Get the data and store the handle |
|
955 CSBGenericTransferType* gtt = NULL; |
|
956 LOGGER_WRITE( "iDataPtr.Set( iSBEClient->TransferDataInfoL( gtt, iSBEDataLeft ) : start" ); |
|
957 iDataPtr.Set( iSBEClient->TransferDataInfoL( gtt, iLastChunk ) ); |
|
958 LOGGER_WRITE( "iDataPtr.Set( iSBEClient->TransferDataInfoL( gtt, iSBEDataLeft ) : stop" ); |
|
959 LOGGER_WRITE_1( "CSConSBEClient::ProcessRequestDataL() :\ |
|
960 Received data size %d", iDataPtr.Length() ); |
|
961 LOGGER_WRITE_1( "CSConSBEClient::ProcessRequestDataL() :\ |
|
962 Received from DO 0x%08x", uid ); |
|
963 LOGGER_WRITE_1( "CSConSBEClient::ProcessRequestDataL() :\ |
|
964 Is last chunk %d", iLastChunk ); |
|
965 LOGGER_WRITE_1( "CSConSBEClient::ProcessRequestDataL() :\ |
|
966 Transfertype %d", iCurrentTask->iRequestDataParams->iDataOwner->iTransDataType ); |
|
967 |
|
968 if( gtt ) |
|
969 { |
|
970 delete gtt; |
|
971 } |
|
972 |
|
973 CleanupStack::PopAndDestroy( ptt ); |
941 CleanupStack::PopAndDestroy( ptt ); |
974 } |
942 } |
975 else if( !iCurrentTask->iRequestDataParams->iDataOwner->iJavaHash ) |
943 else if( !iCurrentTask->iRequestDataParams->iDataOwner->iJavaHash ) |
976 { |
944 { |
977 stt = CSBSIDTransferType::NewL( sid, driveNumber, transferDataType ); |
945 CSBSIDTransferType* stt = CSBSIDTransferType::NewL( |
|
946 sid, driveNumber, transferDataType ); |
978 CleanupStack::PushL( stt ); |
947 CleanupStack::PushL( stt ); |
979 LOGGER_WRITE( "iSBEClient->RequestDataL( stt ) : start" ); |
948 |
980 TRequestStatus status; |
949 RequestDataL( *stt ); |
981 iSBEClient->RequestDataL( *stt, status ); |
950 |
982 User::WaitForRequest( status ); |
|
983 LOGGER_WRITE( "iSBEClient->RequestDataL( stt ) : stop" ); |
|
984 |
|
985 LOGGER_WRITE_1( "CSConSBEClient::ProcessRequestDataL() :\ |
|
986 status.Int() %d", status.Int() ); |
|
987 User::LeaveIfError( status.Int() ); |
|
988 |
|
989 //Get the data and store the handle |
|
990 CSBGenericTransferType* gtt = NULL; |
|
991 LOGGER_WRITE( "iDataPtr.Set( iSBEClient->TransferDataInfoL( gtt, iSBEDataLeft ) : start" ); |
|
992 iDataPtr.Set( iSBEClient->TransferDataInfoL( gtt, iLastChunk ) ); |
|
993 LOGGER_WRITE( "iDataPtr.Set( iSBEClient->TransferDataInfoL( gtt, iSBEDataLeft ) : stop" ); |
|
994 LOGGER_WRITE_1( "CSConSBEClient::ProcessRequestDataL() :\ |
|
995 Received data size %d", iDataPtr.Length() ); |
|
996 LOGGER_WRITE_1( "CSConSBEClient::ProcessRequestDataL() :\ |
|
997 Is last chunk %d", iLastChunk ); |
|
998 LOGGER_WRITE_1( "CSConSBEClient::ProcessRequestDataL() :\ |
|
999 Transfertype %d", |
|
1000 iCurrentTask->iRequestDataParams->iDataOwner->iTransDataType ); |
|
1001 |
|
1002 if( gtt ) |
|
1003 { |
|
1004 delete gtt; |
|
1005 } |
|
1006 |
|
1007 CleanupStack::PopAndDestroy( stt ); |
951 CleanupStack::PopAndDestroy( stt ); |
1008 } |
952 } |
1009 else |
953 else |
1010 { |
954 { |
1011 TPtr javaHashPtr = iCurrentTask->iRequestDataParams->iDataOwner->iJavaHash->Des(); |
955 TPtr javaHashPtr = iCurrentTask->iRequestDataParams->iDataOwner->iJavaHash->Des(); |
1012 |
956 CSBJavaTransferType* jtt( NULL ); |
1013 //When ESystemData is requested, request EJavaMIDlet |
957 //When ESystemData is requested, request EJavaMIDlet |
1014 if( packageDataType == ESystemData ) |
958 if( packageDataType == ESystemData ) |
1015 { |
959 { |
1016 jtt = CSBJavaTransferType::NewL( javaHashPtr, driveNumber, EJavaMIDlet ); |
960 jtt = CSBJavaTransferType::NewL( javaHashPtr, driveNumber, EJavaMIDlet ); |
1017 } |
961 } |
1022 } |
966 } |
1023 |
967 |
1024 if( packageDataType == ESystemData || transferDataType == EPassiveBaseData ) |
968 if( packageDataType == ESystemData || transferDataType == EPassiveBaseData ) |
1025 { |
969 { |
1026 CleanupStack::PushL( jtt ); |
970 CleanupStack::PushL( jtt ); |
1027 LOGGER_WRITE( "iSBEClient->RequestDataL( jtt ) : start" ); |
|
1028 TRequestStatus status; |
|
1029 iSBEClient->RequestDataL( *jtt, status ); |
|
1030 User::WaitForRequest( status ); |
|
1031 LOGGER_WRITE( "iSBEClient->RequestDataL( jtt ) : stop" ); |
|
1032 |
971 |
1033 LOGGER_WRITE_1( "CSConSBEClient::ProcessRequestDataL() :\ |
972 RequestDataL( *jtt ); |
1034 status.Int() %d", status.Int() ); |
973 |
1035 User::LeaveIfError( status.Int() ); |
|
1036 |
|
1037 //Get the data and store the handle |
|
1038 CSBGenericTransferType* gtt = NULL; |
|
1039 LOGGER_WRITE( "iDataPtr.Set( iSBEClient->TransferDataInfoL( gtt, iSBEDataLeft ) : start" ); |
|
1040 iDataPtr.Set( iSBEClient->TransferDataInfoL( gtt, iLastChunk ) ); |
|
1041 LOGGER_WRITE( "iDataPtr.Set( iSBEClient->TransferDataInfoL( gtt, iSBEDataLeft ): stop" ); |
|
1042 LOGGER_WRITE_1( "CSConSBEClient::ProcessRequestDataL() :\ |
|
1043 Received data size %d", iDataPtr.Length() ); |
|
1044 LOGGER_WRITE_1( "CSConSBEClient::ProcessRequestDataL() :\ |
|
1045 Is last chunk %d", iLastChunk ); |
|
1046 LOGGER_WRITE_1( "CSConSBEClient::ProcessRequestDataL() :\ |
|
1047 Transfertype %d", |
|
1048 iCurrentTask->iRequestDataParams->iDataOwner->iTransDataType ); |
|
1049 |
|
1050 if( gtt ) |
|
1051 { |
|
1052 delete gtt; |
|
1053 } |
|
1054 |
|
1055 CleanupStack::PopAndDestroy( jtt ); |
974 CleanupStack::PopAndDestroy( jtt ); |
1056 } |
975 } |
1057 else |
976 else |
1058 { |
977 { |
1059 //No data |
978 //No data |
1060 iDataPtr.Set( KNullDesC8 ); |
979 iDataBuffer->Reset(); |
|
980 iDataBufferSize = 0; |
1061 iLastChunk = ETrue; |
981 iLastChunk = ETrue; |
1062 } |
982 } |
1063 } |
983 } |
1064 } |
984 } |
1065 |
985 |
1066 TInt dataBufLength = iDataPtr.Length(); |
986 LOGGER_WRITE_1("readed iLastChunk: %d", (TInt) iLastChunk ); |
1067 LOGGER_WRITE_1( "CSConSBEClient::ProcessRequestDataL() : \ |
987 LOGGER_WRITE_1("readed iDataBufferSize: %d", iDataBufferSize ); |
1068 Data received: %d", dataBufLength ); |
988 |
1069 |
989 |
1070 TInt maxLength = iMaxObjectSize - 1024; |
|
1071 LOGGER_WRITE_1( "CSConSBEClient::ProcessRequestDataL() : \ |
|
1072 Max length: %d", maxLength ); |
|
1073 |
990 |
1074 if( iCurrentTask->iRequestDataParams->iBackupData ) |
991 if( iCurrentTask->iRequestDataParams->iBackupData ) |
1075 { |
992 { |
1076 delete iCurrentTask->iRequestDataParams->iBackupData; |
993 delete iCurrentTask->iRequestDataParams->iBackupData; |
1077 iCurrentTask->iRequestDataParams->iBackupData = NULL; |
994 iCurrentTask->iRequestDataParams->iBackupData = NULL; |
1078 } |
995 } |
1079 |
996 |
|
997 TInt dataToRead = KMaxObjectSize; |
|
998 if ( dataToRead > iDataBufferSize ) |
|
999 dataToRead = iDataBufferSize; |
|
1000 |
1080 //Initialize the task data buffer |
1001 //Initialize the task data buffer |
1081 iCurrentTask->iRequestDataParams->iBackupData = HBufC8::NewL( maxLength ); |
1002 iCurrentTask->iRequestDataParams->iBackupData = HBufC8::NewL( dataToRead ); |
1082 //Get descriptor task's buffer |
1003 //Get descriptor task's buffer |
1083 TPtr8 backupDataPtr = iCurrentTask->iRequestDataParams->iBackupData->Des(); |
1004 TPtr8 backupDataPtr = iCurrentTask->iRequestDataParams->iBackupData->Des(); |
1084 |
1005 |
1085 TInt copyPos = 0; |
1006 |
1086 |
1007 iDataBuffer->Read(0, backupDataPtr, dataToRead ); |
1087 //Copy data to task buffer |
1008 iDataBuffer->Delete(0, dataToRead); |
1088 for( ; iDataPos < dataBufLength && copyPos < maxLength; |
1009 iDataBufferSize -= dataToRead; |
1089 iDataPos++ ) |
1010 |
1090 { |
1011 if ( !iLastChunk || iDataBufferSize>0 ) |
1091 backupDataPtr.Append( iDataPtr[iDataPos] ); |
1012 { |
1092 copyPos++; |
1013 LOGGER_WRITE( "CSConSBEClient::ProcessRequestDataL() : There are more data available" ); |
1093 } |
|
1094 |
|
1095 LOGGER_WRITE_1( "CSConSBEClient::ProcessRequestDataL() : \ |
|
1096 End - copyPos: %d", copyPos ); |
|
1097 LOGGER_WRITE_1( "CSConSBEClient::ProcessRequestDataL() : \ |
|
1098 End - iDataPos: %d", iDataPos ); |
|
1099 |
|
1100 //Are there more data left in the buffer |
|
1101 if( iDataPos < dataBufLength ) |
|
1102 { |
|
1103 LOGGER_WRITE( "iSBEClient->RequestDataL( stt ) : There is more data in buffer" ); |
|
1104 iDataLeft = ETrue; |
|
1105 iCurrentTask->iRequestDataParams->iMoreData = ETrue; |
1014 iCurrentTask->iRequestDataParams->iMoreData = ETrue; |
1106 //Another task is needed to transfer the data to the client |
1015 //Another task is needed to transfer the data to the client |
1107 ret = KErrCompletion; |
1016 ret = KErrCompletion; |
1108 } |
1017 } |
1109 else |
1018 else |
1110 { |
1019 { |
1111 //Check if the backup server has more data from the dataowner |
1020 LOGGER_WRITE( "CSConSBEClient::ProcessRequestDataL() : All data readed" ); |
1112 if( !iLastChunk ) |
1021 iDataBuffer->Reset(); |
1113 { |
1022 iDataBufferSize = 0; |
1114 iCurrentTask->iRequestDataParams->iMoreData = ETrue; |
1023 // task will be completed, initialize iLastChunk value for next operation |
1115 //Another task is needed to transfer the data to the client |
1024 iLastChunk = EFalse; |
1116 ret = KErrCompletion; |
1025 } |
1117 LOGGER_WRITE( "iSBEClient->RequestDataL( stt ) : There are more data available from SBE" ); |
1026 |
1118 } |
|
1119 else |
|
1120 { |
|
1121 iCurrentTask->iRequestDataParams->iMoreData = EFalse; |
|
1122 } |
|
1123 |
|
1124 iDataPos = 0; |
|
1125 iDataLeft = EFalse; |
|
1126 } |
|
1127 |
1027 |
1128 LOGGER_WRITE_1( "CSConSBEClient::ProcessRequestDataL() : returned %d", ret ); |
1028 LOGGER_WRITE_1( "CSConSBEClient::ProcessRequestDataL() : returned %d", ret ); |
1129 return ret; |
1029 return ret; |
|
1030 } |
|
1031 |
|
1032 void CSConSBEClient::RequestDataL( CSBGenericTransferType& aGenericTransferType ) |
|
1033 { |
|
1034 TRACE_FUNC_ENTRY; |
|
1035 if ( !iDataBuffer ) |
|
1036 User::Leave( KErrArgument ); |
|
1037 |
|
1038 do |
|
1039 { |
|
1040 LOGGER_WRITE( "iSBEClient->RequestDataL() : start" ); |
|
1041 TRequestStatus status; |
|
1042 iSBEClient->RequestDataL( aGenericTransferType, status ); |
|
1043 User::WaitForRequest( status ); |
|
1044 LOGGER_WRITE_1( "iSBEClient->RequestDataL() : status.Int() %d", status.Int() ); |
|
1045 User::LeaveIfError( status.Int() ); |
|
1046 |
|
1047 //Get the data and store the handle |
|
1048 CSBGenericTransferType* gtt = NULL; |
|
1049 const TPtrC8& dataPtr = iSBEClient->TransferDataInfoL( gtt, iLastChunk ); |
|
1050 LOGGER_WRITE_1("data size: %d", dataPtr.Length()); |
|
1051 delete gtt; |
|
1052 iDataBuffer->ExpandL( iDataBufferSize, dataPtr.Length() ); |
|
1053 iDataBuffer->Write(iDataBufferSize, dataPtr); |
|
1054 iDataBufferSize += dataPtr.Length(); |
|
1055 LOGGER_WRITE_1("total buffer size: %d", iDataBufferSize); |
|
1056 } |
|
1057 // Continue if there are more data, and our packet is not full |
|
1058 while ( !iLastChunk && iDataBufferSize < KMaxObjectSize ); |
|
1059 |
|
1060 TRACE_FUNC_EXIT; |
1130 } |
1061 } |
1131 |
1062 |
1132 // ----------------------------------------------------------------------------- |
1063 // ----------------------------------------------------------------------------- |
1133 // CSConSBEClient::ProcessGetDataOwnerStatusL() |
1064 // CSConSBEClient::ProcessGetDataOwnerStatusL() |
1134 // Executes GetDataOwnerStatus task |
1065 // Executes GetDataOwnerStatus task |