1 /* |
1 /* |
2 * Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). |
2 * Copyright (c) 2005-2010 Nokia Corporation and/or its subsidiary(-ies). |
3 * All rights reserved. |
3 * All rights reserved. |
4 * This component and the accompanying materials are made available |
4 * This component and the accompanying materials are made available |
5 * under the terms of "Eclipse Public License v1.0" |
5 * under the terms of "Eclipse Public License v1.0" |
6 * which accompanies this distribution, and is available |
6 * which accompanies this distribution, and is available |
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html". |
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html". |
376 EFileWrite | EFileShareExclusive ); |
376 EFileWrite | EFileShareExclusive ); |
377 file.Close(); |
377 file.Close(); |
378 |
378 |
379 if( ret == KErrNone ) |
379 if( ret == KErrNone ) |
380 { |
380 { |
381 delete aObject; |
381 CreateObexBufObjectL( aObject, aBuffer ); |
382 aObject = CObexBufObject::NewL( NULL ); |
|
383 |
|
384 if( aBuffer ) |
|
385 { |
|
386 aBuffer->Reset(); |
|
387 delete aBuffer; |
|
388 } |
|
389 |
|
390 aBuffer = CBufFlat::NewL( KSConBufferSize ); |
|
391 aBuffer->ResizeL( KSConBufferSize ); |
|
392 |
|
393 TObexFilenameBackedBuffer bufferdetails( *aBuffer, iTempFileName, |
|
394 CObexBufObject::EDoubleBuffering ); |
|
395 aObject->SetDataBufL( bufferdetails ); |
|
396 } |
382 } |
397 } |
383 } |
398 else |
384 else |
399 { |
385 { |
400 LOGGER_WRITE( "CSConFTP::PutFileObjectInitL() : not EProprietary" ); |
386 LOGGER_WRITE( "CSConFTP::PutFileObjectInitL() : not EProprietary" ); |
430 |
416 |
431 file.Close(); |
417 file.Close(); |
432 |
418 |
433 if( ret == KErrNone ) |
419 if( ret == KErrNone ) |
434 { |
420 { |
435 delete aObject; |
421 CreateObexBufObjectL( aObject, aBuffer ); |
436 aObject = CObexBufObject::NewL( NULL ); |
|
437 |
|
438 if( aBuffer ) |
|
439 { |
|
440 aBuffer->Reset(); |
|
441 delete aBuffer; |
|
442 } |
|
443 |
|
444 aBuffer = CBufFlat::NewL( KSConBufferSize ); |
|
445 aBuffer->ResizeL( KSConBufferSize ); |
|
446 |
|
447 TObexFilenameBackedBuffer bufferdetails( *aBuffer, iTempFileName, |
|
448 CObexBufObject::EDoubleBuffering ); |
|
449 aObject->SetDataBufL( bufferdetails ); |
|
450 |
422 |
451 if( lowMemory ) |
423 if( lowMemory ) |
452 { |
424 { |
453 // return error. it's up to pccon/ftp plugin howto handle it.. |
425 // return error. it's up to pccon/ftp plugin howto handle it.. |
454 LOGGER_WRITE( "CSConFTP::PutFileObjectInitL() : low memory" ); |
426 LOGGER_WRITE( "CSConFTP::PutFileObjectInitL() : low memory" ); |
456 } |
428 } |
457 } |
429 } |
458 |
430 |
459 LOGGER_WRITE_1( "CSConFTP::PutFileObjectInitL( CObexBufObject*& aObject, CBufFlat*& aBuffer ) : returned %d", ret ); |
431 LOGGER_WRITE_1( "CSConFTP::PutFileObjectInitL( CObexBufObject*& aObject, CBufFlat*& aBuffer ) : returned %d", ret ); |
460 return ret; |
432 return ret; |
|
433 } |
|
434 |
|
435 void CSConFTP::CreateObexBufObjectL( CObexBufObject*& aObject, CBufFlat*& aBuffer ) |
|
436 { |
|
437 delete aObject; |
|
438 aObject = NULL; |
|
439 aObject = CObexBufObject::NewL( NULL ); |
|
440 |
|
441 delete aBuffer; |
|
442 aBuffer = NULL; |
|
443 |
|
444 aBuffer = CBufFlat::NewL( KSConBufferSize ); |
|
445 aBuffer->ResizeL( KSConBufferSize ); |
|
446 |
|
447 TObexFilenameBackedBuffer bufferdetails( *aBuffer, iTempFileName, |
|
448 CObexBufObject::EDoubleBuffering ); |
|
449 TRAPD( err, aObject->SetDataBufL( bufferdetails )); |
|
450 if ( err == KErrNoMemory ) |
|
451 { |
|
452 LOGGER_WRITE( "KErrNoMemory, Using singe buffer strategy"); |
|
453 // If fails, use singe buffer strategy to save RAM |
|
454 TObexFilenameBackedBuffer lowMemBufferdetails( *aBuffer, iTempFileName, |
|
455 CObexBufObject::ESingleBuffering ); |
|
456 aObject->SetDataBufL( lowMemBufferdetails ); |
|
457 } |
461 } |
458 } |
462 |
459 |
463 // ----------------------------------------------------------------------------- |
460 // ----------------------------------------------------------------------------- |
464 // CSConFTP::PutFileObjectFinalizeL( CObexBufObject*& aObject ) |
461 // CSConFTP::PutFileObjectFinalizeL( CObexBufObject*& aObject ) |
465 // Stores the relayed file object to inbox or file system. |
462 // Stores the relayed file object to inbox or file system. |