OMEvent 클래스

OMEvent는 Rational® Rhapsody®에 정의된 모든 이벤트의 기본 클래스이고 이 클래스에서 코드 생성기가 모든 이벤트를 암시적으로 도출합니다. OMEvent는 추상 클래스이고 event.h. 파일에서 선언됩니다.

OMEvent에는 다음과 같은 두 가지 중요한 데이터 속성이 있습니다.

개별 이벤트 ID 또는 모든 패키지의 기본 ID 번호라는 두 가지 레벨에서 Rational Rhapsody 특성에 이벤트 ID를 지정할 수 있습니다. Rational Rhapsody에서는 기본 번호를 사용하여 모든 이벤트에 순차 ID 번호를 할당합니다.

OMEvent에서 상속된 모든 오브젝트 및 이벤트는 데이터를 추가하여 이벤트 관련 정보를 저장할 수 있습니다. 예를 들어 현재 시간과 함께 이벤트를 전송하려는 경우 관련 유형 이름과 함께 속성을 추가할 수 있고 이벤트에 추가 데이터에 대한 액세스 권한이 부여됩니다.

코드 생성 시 OMEvent에서 상속된 이벤트 클래스의 데이터 멤버에 이벤트 매개변수가 맵핑됩니다.

또한 OMEvent는 다음 두 가지 특수 종류의 이벤트에 대한 기본 클래스입니다.

일반적으로 프레임워크의 GEN 매크로 내에서 캡슐화된 이벤트는 다음 두 단계를 거쳐 생성됩니다.

  1. 이벤트 클래스가 인스턴스화되어 이벤트에 대한 포인터가 생성됩니다.
  2. 수신자의 이벤트 큐에 새 이벤트 포인터를 추가하여 이벤트가 큐에 대기됩니다.

이벤트가 인스턴스화되고 수신자의 이벤트 큐에 추가되면 해당 이벤트는 "전송" 준비가 된 것입니다. 전송 오퍼레이션의 성공은 송신자 및 수신자의 메모리 주소 공간이 동일하다는 가정을 바탕으로 합니다. 그러나 항상 그런 것은 아닙니다.

예를 들어 다음은 송신자와 수신자 메모리 주소 공간이 대부분 다른 시나리오의 몇 가지 예입니다.

이러한 문제를 해결하는 일반적인 한 가지 방법은 정보를 마샬링하는 것입니다. 마샬링은 means 이벤트를 원시 데이터로 변환하고, 프레임워크(예: 발행/구독)를 사용하여 해당 원시 데이터를 전송한 다음 수신 종료 시 원래 형식으로 다시 변환합니다. 상위 레벨 솔루션(예: CORBA™)은 필수 코드를 자동으로 생성하지만 하위 레벨 솔루션은 조심해서 사용해야 합니다. Rational Rhapsody에서는 이러한 태스크를 처리하기 위한 "표준 오퍼레이션"을 작성하여 이벤트 및 인스턴스를 마샬링하거나 하지 않을 방법을 지정할 수 있습니다.

하위 레벨 솔루션의 경우 다음 부분 애니메이션 방법 중 하나를 사용합니다.

부분 애니메이션을 지원하기 위해 C++ 코드 생성에 다음과 같은 특성이 있습니다.

부분 애니메이션을 지원하기 위해 OXF에 다음과 같은 특성이 있습니다.

속성 요약

deleteAfterConsume - 이벤트 이용 후 이벤트 삭제 여부를 판별합니다.

destination - OMReactive 인스턴스를 지정합니다.

frameworkEvent - 이벤트가 프레임워크 이벤트인지 지정합니다.

lid - 이벤트 ID 값을 지정합니다.

상수 요약

OMEventAnyEventId는 임의의 이벤트를 지정하는 예약된 이벤트 ID입니다.

OMCancelEventId는 취소된 이벤트(대상으로 전송되지 않은 이벤트)를 지정하는 예약된 이벤트 ID입니다.

OMEventNullId는 널 상태 전이를 이용하는 데 사용되는 예약된 이벤트 ID입니다.

OMEventStartBehaviorIdOMStartBehavior 이벤트에 사용되는 예약된 이벤트 ID입니다.

OMEventOXFEndEventId는 프레임워크 DLL을 사용하는 COM 서버가 삭제될 때 프레임워크를 닫는 데 사용되는 예약된 이벤트 ID입니다.

OMEventTimeoutId는 제한시간에 사용되는 예약된 이벤트 ID입니다.

생성 요약
OMEvent
OMEvent 오브젝트를 생성합니다.
~OMEvent
OMEvent 오브젝트를 영구 삭제합니다.
메소드 요약
Delete
이벤트 인스턴스를 삭제합니다(이벤트에서 사용할 메모리를 릴리스함).
getDestination
이벤트의 반응 대상을 리턴합니다.
getlId
이벤트 ID를 리턴합니다.
isCancelledTimeout
이벤트 취소 여부를 판별합니다.
isDeleteAfterConsume
이벤트 이용 후 이벤트 디스패처(OMThread)가 해당 이벤트를 삭제한 경우 TRUE를 리턴합니다.
isFrameworkEvent
이벤트가 내부 프레임워크 이벤트인 경우 TRUE를 리턴합니다.
isRealEvent
이벤트가 널 상태 전이 이벤트, 제한시간 또는 사용자 이벤트인 경우 TRUE를 리턴합니다.
isTimeout
이벤트가 제한시간인 경우 TRUE를 리턴합니다.
isTypeOf
이벤트가 지정한 유형(지정한 ID가 있음)인 경우 TRUE를 리턴합니다.
setDeleteAfterConsume
이벤트 이용 후 이벤트 디스패처(OMThread)가 해당 이벤트를 삭제할지 여부를 판별합니다.
setDestination
이벤트 반응 대상을 설정합니다.
setFrameworkEvent
내부 프레임워크 이벤트로 간주되도록 이벤트를 설정합니다.
setlId
이벤트 ID를 설정합니다.

피드백