OMGuard는 시작과 종료 사이에 사용자 오퍼레이션을 보호되거나 잠기도록 설정합니다. 이 클래스는 보호된 오퍼레이션에서 뮤텍스를 적절하게 잠그고 해제하도록 생성된 코드(GUARD_OPERATION 매크로)에서 사용됩니다.
OMGuard의 사본 생성자 및 대입 연산자는 보호 오브젝트 뮤텍스의 잘못된 잠금 해제를 피하기 위해 명시적으로 사용하지 않습니다.
이 클래스는 헤더 파일인 omprotected.h에 정의되어 있습니다.
END_REACTIVE_GUARDED_SECTION은 반응 오브젝트에 사용되는 코드 섹션의 보호를 종료합니다.
END_THREAD_GUARDED_SECTION은 활성 사용자 오브젝트의 오퍼레이션에 대한 보호를 중지합니다.
GUARD_OPERATION은 OMGuard 클래스 오브젝트로 오퍼레이션을 보호합니다.
START_DTOR_REACTIVE_GUARDED_SECTION은 반응 인스턴스의 소멸에 사용되는 코드 섹션의 보호를 시작합니다.
START_DTOR_THREAD_GUARDED_SECTION은 활성 사용자 오브젝트 소멸자에 대한 보호를 시작합니다.
START_REACTIVE_GUARDED_SECTION은 반응 오브젝트에 사용되는 코드 섹션의 보호를 시작합니다.
START_THREAD_GUARDED_SECTION은 활성 사용자 오브젝트의 오퍼레이션에 대한 보호를 시작합니다.
END_REACTIVE_GUARDED_SECTION
반응 오브젝트에 사용되는 코드 섹션의 보호를 종료합니다. 이 매크로는 이벤트 디스패치와 반응 클래스 인스턴스 삭제 사이에서 "경주"가 발생하지 않도록 반응 클래스 이벤트 디스패치 시 호출됩니다. 이러한 메커니즘은 반응 클래스 DTOR이 보호되도록 설정된 경우 활성화됩니다.
END_THREAD_GUARDED_SECTION
활성 사용자 오브젝트의 오퍼레이션에 대한 보호를 중지합니다. 이 매크로는 활성 오브젝트 삭제로부터 이벤트 디스패치를 보호하도록 OMThread 이벤트 디스패치에 사용됩니다. 이러한 메커니즘은 활성 클래스 DTOR이 보호되도록 설정된 경우 활성 클래스에 대해 생성된 코드에서 활성화됩니다.
START_THREAD_GUARDED_SECTION 매크로와 END_THREAD_GUARDED_SECTION 매크로는 toGuardThread가 TRUE인 경우 execute 메소드에 의해 호출됩니다.
GUARD_OPERATION
OMGuard 클래스 오브젝트로 오퍼레이션을 보호합니다. 이 매크로는 생성된 코드에서 사용됩니다.
이 매크로는 보호된 클래스에서 OMProtected의 집계를 지원하고 보호된 클래스로 OMProtected로부터의 상속을 지원합니다.
OMDECLARE_GUARDED
OMProtected로부터의 상속 대신 보호된 클래스 내부의 OMProtected 오브젝트를 집계합니다. 이는 다음과 같이 정의합니다.
#define OMDECLARE_GUARDED
public:
inline void lock() const {m_omGuard.lock();}
inline void unlock() const
{m_omGuard.unlock();}
inline const OMProtected& getGuard()
const {return m_omGuard;}
START_DTOR_REACTIVE_GUARDED_SECTION
반응 오브젝트의 소멸에 사용되는 코드 섹션의 보호를 시작합니다. 이 매크로는 보호되도록 설정된 경우 반응(활성 아님) 클래스의 DTOR에서 호출됩니다. 반응 인스턴스 삭제 시 삭제와 이벤트 디스패치 사이에 "경주"가 발생하지 않도록 이러한 작업이 수행됩니다.
START_DTOR_THREAD_GUARDED_SECTION
활성 사용자 오브젝트 소멸자에 대한 보호를 시작합니다. 이 매크로는 보호되도록 설정된 경우 활성 클래스의 DTOR에서 호출됩니다. 활성 인스턴스 삭제 시 삭제와 이벤트 디스패치 사이에 "경주"가 발생하지 않도록 이러한 작업이 수행됩니다.
START_REACTIVE_GUARDED_SECTION
반응 오브젝트에 사용되는 코드 섹션의 보호를 시작합니다. 이 매크로는 이벤트 디스패치와 반응 클래스 인스턴스 삭제 사이에서 "경주"가 발생하지 않도록 반응 클래스 이벤트 디스패치 시 호출됩니다. 이러한 메커니즘은 반응 클래스 DTOR이 보호되도록 설정된 경우 활성화됩니다.
START_THREAD_GUARDED_SECTION
활성 사용자 오브젝트의 오퍼레이션에 대한 보호를 시작합니다. 이 매크로는 활성 오브젝트 삭제로부터 이벤트 디스패치를 보호하도록 OMThread 이벤트 디스패치에 사용됩니다. 이러한 메커니즘은 활성 클래스 DTOR이 보호되도록 설정된 경우 활성 클래스에 대해 생성된 코드에서 활성화됩니다.
START_THREAD_GUARDED_SECTION 매크로와 END_THREAD_GUARDED_SECTION 매크로는 toGuardThread가 TRUE인 경우 execute 메소드에 의해 호출됩니다.