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( const TInt /*aMaxObjectSize*/, 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 |
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 |
261 { |
261 { |
262 case ESetBURMode : |
262 case ESetBURMode : |
263 LOGGER_WRITE( "CSConSBEClient::RunL() : ESetBURMode" ); |
263 LOGGER_WRITE( "CSConSBEClient::RunL() : ESetBURMode" ); |
264 TRAP( err, ProcessSetBURModeL() ); |
264 TRAP( err, ProcessSetBURModeL() ); |
265 LOGGER_WRITE_1( "CSConSBEClient::RunL() : ProcessSetBURModeL() : returned %d", err ); |
265 LOGGER_WRITE_1( "CSConSBEClient::RunL() : ProcessSetBURModeL() : returned %d", err ); |
266 HandleSBEErrorL( err ); |
|
267 User::RequestComplete( iCallerStatus, err ); |
|
268 break; |
266 break; |
269 case EListPublicFiles : |
267 case EListPublicFiles : |
270 LOGGER_WRITE( "CSConSBEClient::RunL() : EListPublicFiles" ); |
268 LOGGER_WRITE( "CSConSBEClient::RunL() : EListPublicFiles" ); |
271 TRAP( err, ProcessListPublicFilesL() ); |
269 TRAP( err, ProcessListPublicFilesL() ); |
272 LOGGER_WRITE_1( "CSConSBEClient::RunL() : ProcessListPublicFilesL() : returned %d", err ); |
270 LOGGER_WRITE_1( "CSConSBEClient::RunL() : ProcessListPublicFilesL() : returned %d", err ); |
273 HandleSBEErrorL( err ); |
|
274 User::RequestComplete( iCallerStatus, err ); |
|
275 break; |
271 break; |
276 case EListDataOwners : |
272 case EListDataOwners : |
277 LOGGER_WRITE( "CSConSBEClient::RunL() : EListDataOwners" ); |
273 LOGGER_WRITE( "CSConSBEClient::RunL() : EListDataOwners" ); |
278 TRAP( err, ProcessListDataOwnersL() ); |
274 TRAP( err, ProcessListDataOwnersL() ); |
279 LOGGER_WRITE_1( "CSConSBEClient::RunL() : ProcessListDataOwnersL() : returned %d", err ); |
275 LOGGER_WRITE_1( "CSConSBEClient::RunL() : ProcessListDataOwnersL() : returned %d", err ); |
280 HandleSBEErrorL( err ); |
|
281 User::RequestComplete( iCallerStatus, err ); |
|
282 break; |
276 break; |
283 case EGetDataSize : |
277 case EGetDataSize : |
284 LOGGER_WRITE( "CSConSBEClient::RunL() : EGetDataSize" ); |
278 LOGGER_WRITE( "CSConSBEClient::RunL() : EGetDataSize" ); |
285 TRAP( err, ProcessGetDataSizeL() ); |
279 TRAP( err, ProcessGetDataSizeL() ); |
286 LOGGER_WRITE_1( "CSConSBEClient::RunL() : ProcessGetDataSizeL() : returned %d", err ); |
280 LOGGER_WRITE_1( "CSConSBEClient::RunL() : ProcessGetDataSizeL() : returned %d", err ); |
287 HandleSBEErrorL( err ); |
|
288 User::RequestComplete( iCallerStatus, err ); |
|
289 break; |
281 break; |
290 case ERequestData : |
282 case ERequestData : |
291 LOGGER_WRITE( "CSConSBEClient::RunL() : ERequestData" ); |
283 LOGGER_WRITE( "CSConSBEClient::RunL() : ERequestData" ); |
292 TRAP( err, ret = ProcessRequestDataL() ); |
284 TRAP( err, ret = ProcessRequestDataL() ); |
293 LOGGER_WRITE_1( "CSConSBEClient::RunL() : ProcessRequestDataL() : returned %d", err ); |
285 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; |
286 break; |
303 case EGetDataOwnerStatus : |
287 case EGetDataOwnerStatus : |
304 LOGGER_WRITE( "CSConSBEClient::RunL() : EGetDataOwnerStatus" ); |
288 LOGGER_WRITE( "CSConSBEClient::RunL() : EGetDataOwnerStatus" ); |
305 TRAP( err, ProcessGetDataOwnerStatusL() ); |
289 TRAP( err, ProcessGetDataOwnerStatusL() ); |
306 LOGGER_WRITE_1( "CSConSBEClient::RunL() : ProcessGetDataOwnerStatusL() : returned %d", err ); |
290 LOGGER_WRITE_1( "CSConSBEClient::RunL() : ProcessGetDataOwnerStatusL() : returned %d", err ); |
307 HandleSBEErrorL( err ); |
|
308 User::RequestComplete( iCallerStatus, err ); |
|
309 break; |
291 break; |
310 case ESupplyData : |
292 case ESupplyData : |
311 LOGGER_WRITE( "CSConSBEClient::RunL() : ESupplyData" ); |
293 LOGGER_WRITE( "CSConSBEClient::RunL() : ESupplyData" ); |
312 TRAP( err, ret = ProcessSupplyDataL() ); |
294 TRAP( err, ret = ProcessSupplyDataL() ); |
313 LOGGER_WRITE_1( "CSConSBEClient::RunL() : SupplyDataL() : returned %d", err ); |
295 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; |
296 break; |
323 default : |
297 default : |
|
298 err = KErrNotSupported; |
324 LOGGER_WRITE( "CSConSBEClient::RunL() : ERROR! Unknown!" ); |
299 LOGGER_WRITE( "CSConSBEClient::RunL() : ERROR! Unknown!" ); |
325 break; |
300 break; |
326 } |
301 } |
|
302 |
|
303 if ( err ) |
|
304 { |
|
305 HandleSBEErrorL( err ); |
|
306 } |
|
307 else |
|
308 { |
|
309 err = ret; |
|
310 } |
|
311 User::RequestComplete( iCallerStatus, err ); |
327 |
312 |
328 TRACE_FUNC_EXIT; |
313 TRACE_FUNC_EXIT; |
329 } |
314 } |
330 |
315 |
331 // ----------------------------------------------------------------------------- |
316 // ----------------------------------------------------------------------------- |
702 } |
704 } |
703 |
705 |
704 if( includeToList ) |
706 if( includeToList ) |
705 { |
707 { |
706 LOGGER_WRITE_1( "Appending to list, uid: 0x%08x", dataOwner->iUid.iUid ); |
708 LOGGER_WRITE_1( "Appending to list, uid: 0x%08x", dataOwner->iUid.iUid ); |
707 iCurrentTask->iListDataOwnersParams->iDataOwners.Append( dataOwner ); |
709 iCurrentTask->iListDataOwnersParams->iDataOwners.AppendL( dataOwner ); |
|
710 CleanupStack::Pop( dataOwner ); |
708 } |
711 } |
709 |
712 |
710 if( sid ) |
713 if( sid ) |
711 { |
714 { |
712 LOGGER_WRITE_1( "Appending package sid to list, sid: 0x%08x", sid.iId ); |
715 LOGGER_WRITE_1( "Appending package sid to list, sid: 0x%08x", sid.iId ); |
713 CSConDataOwner* packageDataOwner = dataOwner->CopyL(); |
716 CSConDataOwner* packageDataOwner = dataOwner->CopyL(); |
|
717 CleanupStack::PushL( packageDataOwner ); |
714 //Clear package name |
718 //Clear package name |
715 packageDataOwner->iPackageName = KNullDesC(); |
719 packageDataOwner->iPackageName = KNullDesC(); |
716 //Add sid |
720 //Add sid |
717 packageDataOwner->iUid.iUid = sid.iId; |
721 packageDataOwner->iUid.iUid = sid.iId; |
718 iCurrentTask->iListDataOwnersParams->iDataOwners.Append( packageDataOwner ); |
722 iCurrentTask->iListDataOwnersParams->iDataOwners.AppendL( packageDataOwner ); |
|
723 CleanupStack::Pop( packageDataOwner ); |
719 } |
724 } |
720 |
725 |
721 if( !includeToList ) |
726 if( !includeToList ) |
722 { |
727 { |
723 //Not included to list => delete memory allocation |
728 //Not included to list => delete memory allocation |
724 delete dataOwner; |
729 CleanupStack::PopAndDestroy( dataOwner ); |
725 } |
730 } |
726 } |
731 } |
727 |
732 |
728 packageArray.Reset(); |
733 packageArray.Reset(); |
729 CleanupStack::PopAndDestroy( &packageArray ); |
734 CleanupStack::PopAndDestroy( &packageArray ); |
915 else if( !iCurrentTask->iRequestDataParams->iDataOwner->iJavaHash ) |
915 else if( !iCurrentTask->iRequestDataParams->iDataOwner->iJavaHash ) |
916 { |
916 { |
917 sid = iCurrentTask->iRequestDataParams->iDataOwner->iUid; |
917 sid = iCurrentTask->iRequestDataParams->iDataOwner->iUid; |
918 LOGGER_WRITE_1("CSConSBEClient::ProcessRequestDataL() sid: 0x%08x", sid.iId); |
918 LOGGER_WRITE_1("CSConSBEClient::ProcessRequestDataL() sid: 0x%08x", sid.iId); |
919 } |
919 } |
920 |
920 |
921 CSBPackageTransferType* ptt( NULL ); |
921 |
922 CSBSIDTransferType* stt( NULL ); |
|
923 CSBJavaTransferType* jtt( NULL ); |
|
924 |
|
925 LOGGER_WRITE_1( "CSConSBEClient::ProcessRequestDataL() : \ |
|
926 Begin - Data left: %d", iDataLeft ); |
|
927 LOGGER_WRITE_1( "CSConSBEClient::ProcessRequestDataL() : \ |
922 LOGGER_WRITE_1( "CSConSBEClient::ProcessRequestDataL() : \ |
928 Begin - Package data: %d", packageData ); |
923 Begin - Package data: %d", packageData ); |
929 LOGGER_WRITE_1( "CSConSBEClient::ProcessRequestDataL() : \ |
924 |
930 Begin - iDataPos: %d", iDataPos ); |
925 LOGGER_WRITE_1("iLastChunk: %d", (TInt) iLastChunk ); |
931 |
926 LOGGER_WRITE_1("iDataBufferSize: %d", iDataBufferSize ); |
932 //Are there old data left to be transfered? |
927 |
933 if( !iDataLeft ) |
928 // if was't last chunk and there are free space left on our packet |
|
929 if( !iLastChunk && iDataBufferSize < KMaxObjectSize ) |
934 { |
930 { |
935 //No data left, request more from the server |
931 //No data left, request more from the server |
936 if( packageData && !iCurrentTask->iRequestDataParams->iDataOwner->iJavaHash ) |
932 if( packageData && !iCurrentTask->iRequestDataParams->iDataOwner->iJavaHash ) |
937 { |
933 { |
938 ptt = CSBPackageTransferType::NewL( uid, driveNumber, |
934 CSBPackageTransferType* ptt = CSBPackageTransferType::NewL( |
939 packageDataType ); |
935 uid, driveNumber, packageDataType ); |
940 CleanupStack::PushL( ptt ); |
936 CleanupStack::PushL( ptt ); |
941 LOGGER_WRITE( "iSBEClient->RequestDataL( ptt ) : start" ); |
937 |
942 TRequestStatus status; |
938 RequestDataL( *ptt ); |
943 iSBEClient->RequestDataL( *ptt, status ); |
939 |
944 User::WaitForRequest( status ); |
|
945 LOGGER_WRITE( "iSBEClint->RequestDataL( ptt ) : stop" ); |
|
946 |
|
947 LOGGER_WRITE_1( "CSConSBEClient::ProcessRequestDataL() : status.Int() %d", status.Int() ); |
|
948 User::LeaveIfError( status.Int() ); |
|
949 |
|
950 //Get the data and store the handle |
|
951 CSBGenericTransferType* gtt = NULL; |
|
952 LOGGER_WRITE( "iDataPtr.Set( iSBEClient->TransferDataInfoL( gtt, iSBEDataLeft ) : start" ); |
|
953 iDataPtr.Set( iSBEClient->TransferDataInfoL( gtt, iLastChunk ) ); |
|
954 LOGGER_WRITE( "iDataPtr.Set( iSBEClient->TransferDataInfoL( gtt, iSBEDataLeft ) : stop" ); |
|
955 LOGGER_WRITE_1( "CSConSBEClient::ProcessRequestDataL() :\ |
|
956 Received data size %d", iDataPtr.Length() ); |
|
957 LOGGER_WRITE_1( "CSConSBEClient::ProcessRequestDataL() :\ |
|
958 Received from DO 0x%08x", uid ); |
|
959 LOGGER_WRITE_1( "CSConSBEClient::ProcessRequestDataL() :\ |
|
960 Is last chunk %d", iLastChunk ); |
|
961 LOGGER_WRITE_1( "CSConSBEClient::ProcessRequestDataL() :\ |
|
962 Transfertype %d", iCurrentTask->iRequestDataParams->iDataOwner->iTransDataType ); |
|
963 |
|
964 if( gtt ) |
|
965 { |
|
966 delete gtt; |
|
967 } |
|
968 |
|
969 CleanupStack::PopAndDestroy( ptt ); |
940 CleanupStack::PopAndDestroy( ptt ); |
970 } |
941 } |
971 else if( !iCurrentTask->iRequestDataParams->iDataOwner->iJavaHash ) |
942 else if( !iCurrentTask->iRequestDataParams->iDataOwner->iJavaHash ) |
972 { |
943 { |
973 stt = CSBSIDTransferType::NewL( sid, driveNumber, transferDataType ); |
944 CSBSIDTransferType* stt = CSBSIDTransferType::NewL( |
|
945 sid, driveNumber, transferDataType ); |
974 CleanupStack::PushL( stt ); |
946 CleanupStack::PushL( stt ); |
975 LOGGER_WRITE( "iSBEClient->RequestDataL( stt ) : start" ); |
947 |
976 TRequestStatus status; |
948 RequestDataL( *stt ); |
977 iSBEClient->RequestDataL( *stt, status ); |
949 |
978 User::WaitForRequest( status ); |
|
979 LOGGER_WRITE( "iSBEClient->RequestDataL( stt ) : stop" ); |
|
980 |
|
981 LOGGER_WRITE_1( "CSConSBEClient::ProcessRequestDataL() :\ |
|
982 status.Int() %d", status.Int() ); |
|
983 User::LeaveIfError( status.Int() ); |
|
984 |
|
985 //Get the data and store the handle |
|
986 CSBGenericTransferType* gtt = NULL; |
|
987 LOGGER_WRITE( "iDataPtr.Set( iSBEClient->TransferDataInfoL( gtt, iSBEDataLeft ) : start" ); |
|
988 iDataPtr.Set( iSBEClient->TransferDataInfoL( gtt, iLastChunk ) ); |
|
989 LOGGER_WRITE( "iDataPtr.Set( iSBEClient->TransferDataInfoL( gtt, iSBEDataLeft ) : stop" ); |
|
990 LOGGER_WRITE_1( "CSConSBEClient::ProcessRequestDataL() :\ |
|
991 Received data size %d", iDataPtr.Length() ); |
|
992 LOGGER_WRITE_1( "CSConSBEClient::ProcessRequestDataL() :\ |
|
993 Is last chunk %d", iLastChunk ); |
|
994 LOGGER_WRITE_1( "CSConSBEClient::ProcessRequestDataL() :\ |
|
995 Transfertype %d", |
|
996 iCurrentTask->iRequestDataParams->iDataOwner->iTransDataType ); |
|
997 |
|
998 if( gtt ) |
|
999 { |
|
1000 delete gtt; |
|
1001 } |
|
1002 |
|
1003 CleanupStack::PopAndDestroy( stt ); |
950 CleanupStack::PopAndDestroy( stt ); |
1004 } |
951 } |
1005 else |
952 else |
1006 { |
953 { |
1007 TPtr javaHashPtr = iCurrentTask->iRequestDataParams->iDataOwner->iJavaHash->Des(); |
954 TPtr javaHashPtr = iCurrentTask->iRequestDataParams->iDataOwner->iJavaHash->Des(); |
1008 |
955 CSBJavaTransferType* jtt( NULL ); |
1009 //When ESystemData is requested, request EJavaMIDlet |
956 //When ESystemData is requested, request EJavaMIDlet |
1010 if( packageDataType == ESystemData ) |
957 if( packageDataType == ESystemData ) |
1011 { |
958 { |
1012 jtt = CSBJavaTransferType::NewL( javaHashPtr, driveNumber, EJavaMIDlet ); |
959 jtt = CSBJavaTransferType::NewL( javaHashPtr, driveNumber, EJavaMIDlet ); |
1013 } |
960 } |
1018 } |
965 } |
1019 |
966 |
1020 if( packageDataType == ESystemData || transferDataType == EPassiveBaseData ) |
967 if( packageDataType == ESystemData || transferDataType == EPassiveBaseData ) |
1021 { |
968 { |
1022 CleanupStack::PushL( jtt ); |
969 CleanupStack::PushL( jtt ); |
1023 LOGGER_WRITE( "iSBEClient->RequestDataL( jtt ) : start" ); |
|
1024 TRequestStatus status; |
|
1025 iSBEClient->RequestDataL( *jtt, status ); |
|
1026 User::WaitForRequest( status ); |
|
1027 LOGGER_WRITE( "iSBEClient->RequestDataL( jtt ) : stop" ); |
|
1028 |
970 |
1029 LOGGER_WRITE_1( "CSConSBEClient::ProcessRequestDataL() :\ |
971 RequestDataL( *jtt ); |
1030 status.Int() %d", status.Int() ); |
972 |
1031 User::LeaveIfError( status.Int() ); |
|
1032 |
|
1033 //Get the data and store the handle |
|
1034 CSBGenericTransferType* gtt = NULL; |
|
1035 LOGGER_WRITE( "iDataPtr.Set( iSBEClient->TransferDataInfoL( gtt, iSBEDataLeft ) : start" ); |
|
1036 iDataPtr.Set( iSBEClient->TransferDataInfoL( gtt, iLastChunk ) ); |
|
1037 LOGGER_WRITE( "iDataPtr.Set( iSBEClient->TransferDataInfoL( gtt, iSBEDataLeft ): stop" ); |
|
1038 LOGGER_WRITE_1( "CSConSBEClient::ProcessRequestDataL() :\ |
|
1039 Received data size %d", iDataPtr.Length() ); |
|
1040 LOGGER_WRITE_1( "CSConSBEClient::ProcessRequestDataL() :\ |
|
1041 Is last chunk %d", iLastChunk ); |
|
1042 LOGGER_WRITE_1( "CSConSBEClient::ProcessRequestDataL() :\ |
|
1043 Transfertype %d", |
|
1044 iCurrentTask->iRequestDataParams->iDataOwner->iTransDataType ); |
|
1045 |
|
1046 if( gtt ) |
|
1047 { |
|
1048 delete gtt; |
|
1049 } |
|
1050 |
|
1051 CleanupStack::PopAndDestroy( jtt ); |
973 CleanupStack::PopAndDestroy( jtt ); |
1052 } |
974 } |
1053 else |
975 else |
1054 { |
976 { |
1055 //No data |
977 //No data |
1056 iDataPtr.Set( KNullDesC8 ); |
978 iDataBuffer->Reset(); |
|
979 iDataBufferSize = 0; |
1057 iLastChunk = ETrue; |
980 iLastChunk = ETrue; |
1058 } |
981 } |
1059 } |
982 } |
1060 } |
983 } |
1061 |
984 |
1062 TInt dataBufLength = iDataPtr.Length(); |
985 LOGGER_WRITE_1("readed iLastChunk: %d", (TInt) iLastChunk ); |
1063 LOGGER_WRITE_1( "CSConSBEClient::ProcessRequestDataL() : \ |
986 LOGGER_WRITE_1("readed iDataBufferSize: %d", iDataBufferSize ); |
1064 Data received: %d", dataBufLength ); |
987 |
1065 |
988 |
1066 TInt maxLength = iMaxObjectSize - 1024; |
|
1067 LOGGER_WRITE_1( "CSConSBEClient::ProcessRequestDataL() : \ |
|
1068 Max length: %d", maxLength ); |
|
1069 |
989 |
1070 if( iCurrentTask->iRequestDataParams->iBackupData ) |
990 if( iCurrentTask->iRequestDataParams->iBackupData ) |
1071 { |
991 { |
1072 delete iCurrentTask->iRequestDataParams->iBackupData; |
992 delete iCurrentTask->iRequestDataParams->iBackupData; |
1073 iCurrentTask->iRequestDataParams->iBackupData = NULL; |
993 iCurrentTask->iRequestDataParams->iBackupData = NULL; |
1074 } |
994 } |
1075 |
995 |
|
996 TInt dataToRead = KMaxObjectSize; |
|
997 if ( dataToRead > iDataBufferSize ) |
|
998 dataToRead = iDataBufferSize; |
|
999 |
1076 //Initialize the task data buffer |
1000 //Initialize the task data buffer |
1077 iCurrentTask->iRequestDataParams->iBackupData = HBufC8::NewL( maxLength ); |
1001 iCurrentTask->iRequestDataParams->iBackupData = HBufC8::NewL( dataToRead ); |
1078 //Get descriptor task's buffer |
1002 //Get descriptor task's buffer |
1079 TPtr8 backupDataPtr = iCurrentTask->iRequestDataParams->iBackupData->Des(); |
1003 TPtr8 backupDataPtr = iCurrentTask->iRequestDataParams->iBackupData->Des(); |
1080 |
1004 |
1081 TInt copyPos = 0; |
1005 |
1082 |
1006 iDataBuffer->Read(0, backupDataPtr, dataToRead ); |
1083 //Copy data to task buffer |
1007 iDataBuffer->Delete(0, dataToRead); |
1084 for( ; iDataPos < dataBufLength && copyPos < maxLength; |
1008 iDataBufferSize -= dataToRead; |
1085 iDataPos++ ) |
1009 |
1086 { |
1010 if ( !iLastChunk || iDataBufferSize>0 ) |
1087 backupDataPtr.Append( iDataPtr[iDataPos] ); |
1011 { |
1088 copyPos++; |
1012 LOGGER_WRITE( "CSConSBEClient::ProcessRequestDataL() : There are more data available" ); |
1089 } |
|
1090 |
|
1091 LOGGER_WRITE_1( "CSConSBEClient::ProcessRequestDataL() : \ |
|
1092 End - copyPos: %d", copyPos ); |
|
1093 LOGGER_WRITE_1( "CSConSBEClient::ProcessRequestDataL() : \ |
|
1094 End - iDataPos: %d", iDataPos ); |
|
1095 |
|
1096 //Are there more data left in the buffer |
|
1097 if( iDataPos < dataBufLength ) |
|
1098 { |
|
1099 LOGGER_WRITE( "iSBEClient->RequestDataL( stt ) : There is more data in buffer" ); |
|
1100 iDataLeft = ETrue; |
|
1101 iCurrentTask->iRequestDataParams->iMoreData = ETrue; |
1013 iCurrentTask->iRequestDataParams->iMoreData = ETrue; |
1102 //Another task is needed to transfer the data to the client |
1014 //Another task is needed to transfer the data to the client |
1103 ret = KErrCompletion; |
1015 ret = KErrCompletion; |
1104 } |
1016 } |
1105 else |
1017 else |
1106 { |
1018 { |
1107 //Check if the backup server has more data from the dataowner |
1019 LOGGER_WRITE( "CSConSBEClient::ProcessRequestDataL() : All data readed" ); |
1108 if( !iLastChunk ) |
1020 iDataBuffer->Reset(); |
1109 { |
1021 iDataBufferSize = 0; |
1110 iCurrentTask->iRequestDataParams->iMoreData = ETrue; |
1022 // task will be completed, initialize iLastChunk value for next operation |
1111 //Another task is needed to transfer the data to the client |
1023 iLastChunk = EFalse; |
1112 ret = KErrCompletion; |
1024 } |
1113 LOGGER_WRITE( "iSBEClient->RequestDataL( stt ) : There are more data available from SBE" ); |
1025 |
1114 } |
|
1115 else |
|
1116 { |
|
1117 iCurrentTask->iRequestDataParams->iMoreData = EFalse; |
|
1118 } |
|
1119 |
|
1120 iDataPos = 0; |
|
1121 iDataLeft = EFalse; |
|
1122 } |
|
1123 |
1026 |
1124 LOGGER_WRITE_1( "CSConSBEClient::ProcessRequestDataL() : returned %d", ret ); |
1027 LOGGER_WRITE_1( "CSConSBEClient::ProcessRequestDataL() : returned %d", ret ); |
1125 return ret; |
1028 return ret; |
|
1029 } |
|
1030 |
|
1031 void CSConSBEClient::RequestDataL( CSBGenericTransferType& aGenericTransferType ) |
|
1032 { |
|
1033 TRACE_FUNC_ENTRY; |
|
1034 if ( !iDataBuffer ) |
|
1035 User::Leave( KErrArgument ); |
|
1036 |
|
1037 do |
|
1038 { |
|
1039 LOGGER_WRITE( "iSBEClient->RequestDataL() : start" ); |
|
1040 TRequestStatus status; |
|
1041 iSBEClient->RequestDataL( aGenericTransferType, status ); |
|
1042 User::WaitForRequest( status ); |
|
1043 LOGGER_WRITE_1( "iSBEClient->RequestDataL() : status.Int() %d", status.Int() ); |
|
1044 User::LeaveIfError( status.Int() ); |
|
1045 |
|
1046 //Get the data and store the handle |
|
1047 CSBGenericTransferType* gtt = NULL; |
|
1048 const TPtrC8& dataPtr = iSBEClient->TransferDataInfoL( gtt, iLastChunk ); |
|
1049 LOGGER_WRITE_1("data size: %d", dataPtr.Length()); |
|
1050 delete gtt; |
|
1051 iDataBuffer->ExpandL( iDataBufferSize, dataPtr.Length() ); |
|
1052 iDataBuffer->Write(iDataBufferSize, dataPtr); |
|
1053 iDataBufferSize += dataPtr.Length(); |
|
1054 LOGGER_WRITE_1("total buffer size: %d", iDataBufferSize); |
|
1055 } |
|
1056 // Continue if there are more data, and our packet is not full |
|
1057 while ( !iLastChunk && iDataBufferSize < KMaxObjectSize ); |
|
1058 |
|
1059 TRACE_FUNC_EXIT; |
1126 } |
1060 } |
1127 |
1061 |
1128 // ----------------------------------------------------------------------------- |
1062 // ----------------------------------------------------------------------------- |
1129 // CSConSBEClient::ProcessGetDataOwnerStatusL() |
1063 // CSConSBEClient::ProcessGetDataOwnerStatusL() |
1130 // Executes GetDataOwnerStatus task |
1064 // Executes GetDataOwnerStatus task |