dm_db_update_transfer Function

public function dm_db_update_transfer(db, transfer_id, timestamp, state, error, validate) result(rc)

Uses

  • proc~~dm_db_update_transfer~~UsesGraph proc~dm_db_update_transfer dm_db_update_transfer module~dm_transfer dm_transfer proc~dm_db_update_transfer->module~dm_transfer module~dm_error dm_error module~dm_transfer->module~dm_error module~dm_id dm_id module~dm_transfer->module~dm_id module~dm_kind dm_kind module~dm_transfer->module~dm_kind module~dm_mime dm_mime module~dm_transfer->module~dm_mime module~dm_net dm_net module~dm_transfer->module~dm_net module~dm_node dm_node module~dm_transfer->module~dm_node module~dm_time dm_time module~dm_transfer->module~dm_time module~dm_uuid dm_uuid module~dm_transfer->module~dm_uuid module~dm_error->module~dm_kind module~dm_ascii dm_ascii module~dm_error->module~dm_ascii iso_fortran_env iso_fortran_env module~dm_kind->iso_fortran_env module~dm_node->module~dm_id module~dm_node->module~dm_kind module~dm_time->module~dm_error module~dm_time->module~dm_kind module~dm_util dm_util module~dm_time->module~dm_util unix unix module~dm_time->unix module~dm_util->module~dm_error module~dm_util->module~dm_kind

Updates attributes of transfer with passed transfer id. The arguments are validated by default. This function is not thread-safe. If executed by multiple threads, E_NOT_FOUND may be returned even on a successful transfer update.

If argument timestamp is passed, the update is performed only if the old time stamp is less-equal the new time stamp.

If argument state is passed, an update is performed only when:

  • the new value is TRANSFER_STATE_ACTIVE and the old value is TRANSFER_STATE_CREATED;
  • the new value is TRANSFER_STATE_DONE and the old value is TRANSFER_STATE_ACTIVE;
  • the new value is TRANSFER_STATE_FAILED and the old value is TRANSFER_STATE_ACTIVE.

In any other case, the function returns E_INVALID as no transfer was found with the passed id and required state. This behaviour is required to catch race conditions. If argument error is passed additionally, the error code is not updated.

The function returns the following error codes:

  • E_DB_BIND if value binding failed.
  • E_DB_PREPARE if statement preparation failed.
  • E_DB_STEP if step execution failed or no write permission.
  • E_INVALID if transfer id or state is invalid.
  • E_READ_ONLY if database is opened read-only.

Arguments

Type IntentOptional Attributes Name
type(db_type), intent(inout) :: db

Database type.

character(len=*), intent(in) :: transfer_id

Transfer id (UUIDv4).

character(len=*), intent(in), optional :: timestamp

Transfer time stamp (ISO 8601).

integer, intent(in), optional :: state

Transfer state (TRANSFER_STATE_*).

integer, intent(in), optional :: error

Error code.

logical, intent(in), optional :: validate

Validate arguments.

Return Value integer


Calls

proc~~dm_db_update_transfer~~CallsGraph proc~dm_db_update_transfer dm_db_update_transfer interface~dm_db_bind dm_db_bind proc~dm_db_update_transfer->interface~dm_db_bind interface~dm_db_changes dm_db_changes proc~dm_db_update_transfer->interface~dm_db_changes interface~dm_db_query_update dm_db_query_update proc~dm_db_update_transfer->interface~dm_db_query_update interface~dm_db_query_where dm_db_query_where proc~dm_db_update_transfer->interface~dm_db_query_where interface~dm_present dm_present proc~dm_db_update_transfer->interface~dm_present proc~dm_db_finalize dm_db_finalize proc~dm_db_update_transfer->proc~dm_db_finalize proc~dm_db_prepare dm_db_prepare proc~dm_db_update_transfer->proc~dm_db_prepare proc~dm_db_query_build dm_db_query_build proc~dm_db_update_transfer->proc~dm_db_query_build proc~dm_db_query_destroy dm_db_query_destroy proc~dm_db_update_transfer->proc~dm_db_query_destroy proc~dm_db_step dm_db_step proc~dm_db_update_transfer->proc~dm_db_step proc~dm_error_is_valid dm_error_is_valid proc~dm_db_update_transfer->proc~dm_error_is_valid proc~dm_is_error dm_is_error proc~dm_db_update_transfer->proc~dm_is_error proc~dm_time_is_valid dm_time_is_valid proc~dm_db_update_transfer->proc~dm_time_is_valid proc~dm_transfer_state_is_valid dm_transfer_state_is_valid proc~dm_db_update_transfer->proc~dm_transfer_state_is_valid proc~dm_uuid4_is_valid dm_uuid4_is_valid proc~dm_db_update_transfer->proc~dm_uuid4_is_valid sqlite3_finalize sqlite3_finalize proc~dm_db_finalize->sqlite3_finalize sqlite3_prepare_v2 sqlite3_prepare_v2 proc~dm_db_prepare->sqlite3_prepare_v2 proc~dm_btoa dm_btoa proc~dm_db_query_build->proc~dm_btoa sqlite3_step sqlite3_step proc~dm_db_step->sqlite3_step proc~dm_time_is_valid->interface~dm_present proc~dm_ascii_is_digit dm_ascii_is_digit proc~dm_time_is_valid->proc~dm_ascii_is_digit