이벤트 디스패치

OMThread::execute 메소드는 이벤트 루프에 대한 책임을 가지고 있습니다.

이 태스크 정보

다음 시퀀스 다이어그램은 디스패치된 이벤트를 보여줍니다.

이 시퀀스 다이어그램은 이 메소드 내에서 수행되는 이벤트의 기본 시퀀스를 보여줍니다.

이벤트 루프는 다음과 같습니다.

프로시저

  1. executeget 메소드를 호출하여 이벤트 큐에서 첫 번째 이벤트를 가져옵니다.
  2. 이벤트가 NULL 이벤트가 아닌 경우 executegetDestination 메소드를 호출하여 이벤트에 대한 OMReactive 대상을 판별합니다.
  3. executetakeEvent 메소드를 호출하여 반응 오브젝트가 이벤트를 처리하도록 요청합니다. takeEvent는 다음을 수행하는 processEvent 메소드를 호출합니다.
    1. isBusy를 호출하여 오브젝트가 이미 이벤트를 이용하고 있는지 여부를 판별합니다. 오브젝트가 사용 중이 아니면 processEvent는 다음을 수행합니다.

      sm_busy 플래그를 TRUE로 설정합니다.

      getlId를 호출하여 이벤트 ID를 가져옵니다.

      lId의 값을 rootState_dispatchEvent로 전달하여 이 이벤트를 디스패치합니다.

    2. processEvent에서는 shouldCompleteRun을 호출하여 이벤트 이용 후 사용할 널 상태 전이가 있는지 여부를 확인합니다. 사용할 널 상태 전이가 있으면 이 메소드는 runToCompletion을 호출하여 해당 상태 전이를 사용합니다.
    3. processEvent에서는 undoBusy를 호출하여 sm_busy 플래그를 FALSE로 재설정합니다.
  4. executeisDeleteAfterConsume 메소드를 호출하여 이벤트가 삭제되는지 여부를 판별합니다. 속성 속성이 TRUE인 경우 executeDelete 메소드를 호출하여 이벤트를 삭제합니다.

피드백