mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 20:03:20 +08:00
Encapsulate locks for background mode (#6512)
This commit is contained in:
parent
48fd0934a7
commit
6f157c590f
|
@ -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.
|
||||
|
|
Loading…
Reference in New Issue
Block a user