Encapsulate locks for background mode (#6512)

This commit is contained in:
ConjuringCoffee 2023-09-27 17:00:44 +02:00 committed by GitHub
parent 48fd0934a7
commit 6f157c590f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -14,15 +14,23 @@ CLASS zcl_abapgit_background DEFINITION
CLASS-METHODS run
RAISING
zcx_abapgit_exception .
CLASS-METHODS list_methods
RETURNING VALUE(rt_methods) TYPE ty_methods.
CLASS-METHODS enqueue
RAISING
zcx_abapgit_exception.
CLASS-METHODS dequeue.
PROTECTED SECTION.
PRIVATE SECTION.
CONSTANTS gc_enq_type TYPE c LENGTH 12 VALUE 'BACKGROUND'.
ENDCLASS.
CLASS ZCL_ABAPGIT_BACKGROUND IMPLEMENTATION.
CLASS zcl_abapgit_background IMPLEMENTATION.
METHOD list_methods.
@ -69,8 +77,6 @@ CLASS ZCL_ABAPGIT_BACKGROUND IMPLEMENTATION.
METHOD run.
CONSTANTS: lc_enq_type TYPE c LENGTH 12 VALUE 'BACKGROUND'.
DATA: lo_per TYPE REF TO zcl_abapgit_persist_background,
lo_repo TYPE REF TO zcl_abapgit_repo_online,
lt_list TYPE zcl_abapgit_persist_background=>ty_background_keys,
@ -81,20 +87,12 @@ CLASS ZCL_ABAPGIT_BACKGROUND IMPLEMENTATION.
FIELD-SYMBOLS: <ls_list> LIKE LINE OF lt_list.
CALL FUNCTION 'ENQUEUE_EZABAPGIT'
EXPORTING
mode_zabapgit = 'E'
type = lc_enq_type
_scope = '3'
EXCEPTIONS
foreign_lock = 1
system_failure = 2
OTHERS = 3.
IF sy-subrc <> 0.
WRITE: / 'Another intance of the program is already running'.
RETURN.
ENDIF.
TRY.
enqueue( ).
CATCH zcx_abapgit_exception.
WRITE: / 'Another intance of the program is already running'.
RETURN.
ENDTRY.
CREATE OBJECT lo_per.
lt_list = lo_per->list( ).
@ -135,9 +133,30 @@ CLASS ZCL_ABAPGIT_BACKGROUND IMPLEMENTATION.
WRITE: / 'Nothing configured'.
ENDIF.
CALL FUNCTION 'DEQUEUE_EZABAPGIT'
EXPORTING
type = lc_enq_type.
dequeue( ).
ENDMETHOD.
METHOD enqueue.
CALL FUNCTION 'ENQUEUE_EZABAPGIT'
EXPORTING
mode_zabapgit = 'E'
type = gc_enq_type
_scope = '3'
EXCEPTIONS
foreign_lock = 1
system_failure = 2
OTHERS = 3.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
ENDMETHOD.
METHOD dequeue.
CALL FUNCTION 'DEQUEUE_EZABAPGIT'
EXPORTING
type = gc_enq_type.
ENDMETHOD.
ENDCLASS.