class conn::CSBEClient : public CBase |
The client to the Secure Backup Engine. This class is for use by a Secure Backup Server. It provides backup data and receives restore data. It encapsulates some state information as backup or restore operations require a range of actions to be undertaken in the correct order.
It is loaded into the same process as the Secure Backup Server - this is the client interface of the server that is the Secure Backup Engine.
Methods that transfer large amounts of data are asynchronous (to allow the Secure Backup Engine to carry out asynchronous operations) but synchronous versions are included for the benefit of clients that cannot handle asynchronous methods. The asynchronous methods should be used if possible.
Because of the potential large size of backup data it is not copied into descriptors but is located in a transfer buffer.
When requesting backup data the asynchronous call is made and the relevant AO (whose TRequestStatus was supplied) will be activated when the data is available and the completion code will indicate success or failure. If successful, the data can be accessed by means of the GetTransferDataInfo() method and the SignalTransferDataComplete() method is used to indicate that the transfer is complete and the transfer buffer can be re-used.
When supplying snapshot data or restore data the data is copied into a transfer buffer and the asynchronous call is made. Then the relevant AO will be activated when the data has been absorbed by the Secure Backup Engine. An error completion code is supplied. The Secure Backup Server must assume that the transfer buffer is in use until the AO is completed.
During a backup operation, all snapshot data should be provided (or data owners told that they will be doing a base backup) before any data is requested. This is because providing snapshots allows data owners to calculate their data and their data sizes. We cannot provide the expected data sizes until we have received all snapshots.
Once all snapshots have been provided, the order in which backup data is requested is not constrained (except that one multi-chunk set of data must be fully retrieved before the next is requested.
During a restore operation, the Secure Backup Engine expects data in the following order:
1) Registration files
2) Hash data for signed system files.
3) System files for all required data owners.
4) Data for data owners.
Stages (1) through (3) are required in a fixed order. Once stage (4) has been reached the SBE does not impose an order between data owners and does not require that all data from a specific data owner be restored before the next one be started, i.e. it is possible to send base data to all data owners and then increments (but this is not recommended).
Private Member Functions | |
---|---|
CSBEClient () | |
void | ConstructL () |
Private Attributes | |
---|---|
RSBEClientSession * | iClientSession |
IMPORT_C void | AllSnapshotsSuppliedL | ( | ) |
This method sets the type of backup to base for this particular data owner. The whole device may be subject to an incremental backup but a particular data owner may be subject to a base backup (if they have not been backed up previously). The reverse is not true.
This method must only be called when the device has just been put into backup mode. It must only be called once for a SID for a backup operation.
IMPORT_C void | AllSnapshotsSuppliedL | ( | TRequestStatus & | aStatus | ) |
This method which sets the type of backup to base for this particular data owner asynchronously. The whole device may be subject to an incremental backup but a particular data owner may be subject to a base backup (if they have not been backed up previously). The reverse is not true.
This method must only be called when the device has just been put into backup mode. It must only be called once for a SID for a backup operation.
TRequestStatus & aStatus | is TRequestStatus& |
IMPORT_C void | AllSystemFilesRestored | ( | ) |
This method is called when all system files have been provided to allow the Secure Backup Engine to start active data owners.
IMPORT_C void | AllSystemFilesRestoredL | ( | TRequestStatus & | aStatus | ) |
This method is called asynchronously when all system files have been provided to allow the Secure Backup Engine to start active data owners.
TRequestStatus & aStatus | is TRequestStatus& |
IMPORT_C TUint | DataChecksum | ( | TDriveNumber | aDrive, |
TSecureId | aSID | |||
) |
Get a 32-bit checksum for private data. This routine is for test purposes. It must be implemented but an invariant checksum value can be provided. Some tests may cause checksum values to be compared.
TDriveNumber aDrive | the drive containing data being checksummed |
TSecureId aSID | the data owner. |
IMPORT_C TUint | ExpectedDataSizeL | ( | CSBGenericTransferType & | aGenericTransferType | ) |
This method returns the expected size of package data that will be supplied. The size data will be used for the purpose of tracking progess during a backup. If it is inaccurate then the user may see irregular progress but the actual backup data will not be affected so it is acceptable to return an estimated value.
This method must only be called during a backup operation. If it is called when the data owner is not ready for backup then the call will fail.
CSBGenericTransferType & aGenericTransferType | Reference to a CSBGenericTransferType object |
IMPORT_C void | ListOfDataOwnersL | ( | RPointerArray < CDataOwnerInfo > & | aDataOwners | ) |
Gets a list of all registered data owners. This method can be called regardless of backup or restore mode. N.B. If it is called before a restore the set may not include all data owners that are to be restored.
If the Secure Backup Engine has not parsed backup registration files then this call will trigger scanning and parsing.
RPointerArray < CDataOwnerInfo > & aDataOwners | on return an array of information about backup data owners. |
IMPORT_C void | ListOfDataOwnersL | ( | RPointerArray < CDataOwnerInfo > & | aDataOwners, |
TRequestStatus & | aStatus | |||
) |
Gets a list of all registered data owners asynchronously. This method can be called regardless of backup or restore mode. N.B. If it is called before a restore the set may not include all data owners that are to be restored.
If the Secure Backup Engine has not parsed backup registration files then this call will trigger scanning and parsing.
RPointerArray < CDataOwnerInfo > & aDataOwners | on return an array of information about backup data owners. |
TRequestStatus & aStatus | is TRequestStatus& |
IMPORT_C void | PublicFileListL | ( | TDriveNumber | aDrive, |
CSBGenericDataType & | aGenericDataType, | |||
RFileArray & | aFiles | |||
) |
Gets a list of actual public files associated with an SID for partial backup. This allows a client to backup only the public files associated with an SID. This method must only be called when the device is in backup mode as the set of files may not be final until then. This method takes no account of any snapshots - the full list of candidate public files is returned and it is up to the Secure Backup Server to check file attributes if an incremental backup is required.
If the Secure Backup Engine has not parsed backup registration files then this call will trigger scanning and parsing.
TDriveNumber aDrive | the drive concerned. |
CSBGenericDataType & aGenericDataType | reference to the data type. |
RFileArray & aFiles | on return an array of information about files. |
IMPORT_C void | PublicFileListL | ( | TDriveNumber | aDrive, |
CSBGenericDataType & | aGenericDataType, | |||
RFileArray & | aFiles, | |||
TRequestStatus & | aStatus | |||
) |
Gets a list of actual public files associated with an SID for partial backup asynchronously. This allows a client to backup only the public files associated with an SID. This method must only be called when the device is in backup mode as the set of files may not be final until then. This method takes no account of any snapshots - the full list of candidate public files is returned and it is up to the Secure Backup Server to check file attributes if an incremental backup is required.
If the Secure Backup Engine has not parsed backup registration files then this call will trigger scanning and parsing.
TDriveNumber aDrive | the drive concerned. |
CSBGenericDataType & aGenericDataType | reference to the data type. |
RFileArray & aFiles | on return an array of information about files. |
TRequestStatus & aStatus | is TRequestStatus& |
IMPORT_C void | PublicFileListL | ( | TDriveNumber | aDrive, |
CSBGenericDataType & | aGenericDataType, | |||
RPointerArray < CSBEFileEntry > & | aFileList, | |||
TBool & | aFinished, | |||
TInt | aTotalListCursor, | |||
TInt | aMaxResponseSize, | |||
TRequestStatus & | aStatus | |||
) |
This asynchronous method is used to retrieve the list of public files for the specified data owner on the specified drive. Upon completion of aStatus, the caller should check aFileList
TDriveNumber aDrive | The drive that contains the public files being retrieved |
CSBGenericDataType & aGenericDataType | The identifier for the data owner that owns the public files |
RPointerArray < CSBEFileEntry > & aFileList | Upon completion of aStatus, this array will contain the list of public files returned |
TBool & aFinished | Upon completion of aStatus, this flag will be set to indicate that there are more file entries available for this data owner and another call to this method should be made |
TInt aTotalListCursor | Specifies the index into the complete list of public files for this data owner to start the next chunk of file entries from. The number of entries returned by a call to this method can be determined by querying the count of aFileList |
TInt aMaxResponseSize | The maximum total size in bytes of externalised CSBEFileEntry objects that will be returned |
TRequestStatus & aStatus | The TRequestStatus that will be completed once the engine has fully processed this request |
IMPORT_C void | PublicFileListXMLL | ( | TDriveNumber | aDrive, |
TSecureId | aSID, | |||
HBufC *& | aFileList | |||
) |
Gets a list of public files and directories associated with an SID for partial backup or restore. This method returns the data in the form of an XML description for compatibility with older devices.
This method can be called regardless of the backup or restore mode as it does not rely on the set of public files being final.
If the Secure Backup Engine has not parsed backup registration files then this call will trigger scanning and parsing.
IMPORT_C void | RawPublicFileListL | ( | TDriveNumber | aDrive, |
CSBGenericDataType & | aGenericDataType, | |||
RRestoreFileFilterArray & | aFileFilter | |||
) |
Gets a list of public files and directories associated with an SID for partial restore. This method must only be called when the device is in restore mode. This method must only be called after a registration file has been supplied and parsed. Directories can be distinguished from files by a terminating slash.
During a restore operation, the client will have the archive or public files available but the Secure Backup Engine does not. Therefore, the engine cannot list the exact files. This method returns the list of files or directories that were specified in the backup registration file without further analysis and the client can use this information to filter public files for restore.
This allows a client that has taken a full backup to be selective about restore .
If the Secure Backup Engine has not parsed backup registration files then this call will trigger scanning and parsing.
TDriveNumber aDrive | the drive concerned. |
CSBGenericDataType & aGenericDataType | reference to the data type. |
RRestoreFileFilterArray & aFileFilter | on return an array of names of files or directories for restore. |
IMPORT_C void | RequestDataL | ( | CSBGenericTransferType & | aGenericTransferType, |
TRequestStatus & | aStatus | |||
) |
This method requests package data from the Secure Backup Engine asynchronously. When the relevant AO completes the returned data (and information about it) can be accessed by calling TransferDataInfoL() .
Some forms of backup data may be larger than can be handled in one transfer, in which case this method should be called again with the same arguments until all data is signalled as supplied.
CSBGenericTransferType & aGenericTransferType | Reference to a CSBGenericTransferType object |
TRequestStatus & aStatus | the request status of an Active Object to be completed when the data has been received |
IMPORT_C void | RequestDataL | ( | CSBGenericTransferType & | aGenericTransferType | ) |
This synchronous method requests backup data from the Secure Backup Engine. When the method returns the returned data (and information about it) can be accessed by calling TransferDataInfoL() .
Some forms of backup data may be larger than can be handled in one transfer, in which case this method should be called again with the same arguments until all data is signalled as supplied.
CSBGenericTransferType & aGenericTransferType | Reference to a CSBGenericTransferType object |
IMPORT_C void | SIDStatusL | ( | RSIDStatusArray & | aSIDStatus | ) |
Gets the status of a set of data owners. This method must only be called in backup or restore mode.
You must populate the array with the TDataOwnerAndStatus's for each secure id the client is interested in.
RSIDStatusArray & aSIDStatus | an array of structures for information about data owners. On return the status information is filled in. |
IMPORT_C void | SetBURModeL | ( | const TDriveList & | aDriveList, |
TBURPartType | aBURType, | |||
TBackupIncType | aBackupIncType | |||
) |
Sets B&R on or off and sets the base / increment and full / partial mode and the affected drives
const TDriveList & aDriveList | the drives affected. |
TBURPartType aBURType | is a full or partial backup or restore desired or normal operation. |
TBackupIncType aBackupIncType | is a backup base or incremental (ignored for restore operations). |
IMPORT_C void | SetBURModeL | ( | const TDriveList & | aDriveList, |
TBURPartType | aBURType, | |||
TBackupIncType | aBackupIncType, | |||
TRequestStatus & | aStatus | |||
) |
Sets B&R on or off and sets the base / increment and full / partial mode and the affected drives asynchronously.
const TDriveList & aDriveList | the drives affected. |
TBURPartType aBURType | is a full or partial backup or restore desired or normal operation. |
TBackupIncType aBackupIncType | is a backup base or incremental (ignored for restore operations). |
TRequestStatus & aStatus | is TRequestStatus& |
IMPORT_C void | SetSIDListForPartialBURL | ( | RSIDArray & | aSIDs | ) |
If a partial backup is required then this sets the list of data owners. This method must only be called when the device has just been put into backup or restore mode. It must only be called once for a backup or restore operation.
RSIDArray & aSIDs | array of affected data owners. |
IMPORT_C void | SupplyDataL | ( | CSBGenericTransferType & | aGenericTransferType, |
TBool | aFinished, | |||
TRequestStatus & | aStatus | |||
) |
This method supplies some form of package data during a backup or restore operation asynchronously.
When the relevant Active Object is completed the Secure Backup Engine has absorbed the supplied data.
Some forms of data may be larger than can be handled in one transfer, in which case this method should be called again with the same arguments until all data has been supplied.
CSBGenericTransferType & aGenericTransferType | Reference to a CSBGenericTransferType object |
TBool aFinished | ETrue if this buffer is the last one for this package uid, drive and data type |
TRequestStatus & aStatus | the request status of an Active Object to be completed when the data has been transferred |
IMPORT_C void | SupplyDataL | ( | CSBGenericTransferType & | aGenericTransferType, |
TBool | aFinished | |||
) |
This synchronous method supplies some form of package data during a backup or restore operation.
When the method returns the Secure Backup Engine has absorbed the supplied data.
Some forms of data may be larger than can be handled in one transfer, in which case this method should be called again with the same arguments until all data has been supplied.
CSBGenericTransferType & aGenericTransferType | Reference to a CSBGenericTransferType object |
TBool aFinished | ETrue if this buffer is the last one for this package uid, drive and data type |
IMPORT_C TPtr8 & | TransferDataAddressL | ( | ) |
Provides access to the base of the global chunk used to transfer data between the Secure Backup Engine and a Secure Backup Server. This method should be used when the Secure Backup Server is providing data to the Secure Backup Engine (either as part of a restore operation or when supplying snapshots during a backup operation.
The Secure Backup Engine only uses one global chunk at a time. It is not permissible to try to carry out multiple backup or restore operations in parallel. Normally a chunk of global heap would be protected by a mutex. In this case, all the methods of the Secure Backup Engine must be regarded as synchronous and mutually exclusive - it is not permissible to make parallel calls.
The global chunk used during a backup or restore operation may change and so the address must be requested whenever required rather than being cached.
IMPORT_C TPtrC8 & | TransferDataInfoL | ( | CSBGenericTransferType *& | aGenericTransferType, |
TBool & | aFinished | |||
) |
Provides access to the data received from the Secure Backup Engine during a backup operation.
This method should be called after a synchronous or asynchronous request for data has completed.
CSBGenericTransferType *& aGenericTransferType | Reference to a CSBGenericTransferType pointer. Must be NULL |
TBool & aFinished | ETrue if the data is the last chunk, EFalse if there is more to request. |
RSBEClientSession * | iClientSession | [private] |
Pointer to the client session R class wrapped by this class
Copyright ©2010 Nokia Corporation and/or its subsidiary(-ies).
All rights
reserved. Unless otherwise stated, these materials are provided under the terms of the Eclipse Public License
v1.0.