Developer's Guides for

How to Instrument Management Codes in Managed Servers

  1. 관리되고자 하는 서버의 IDL 파일에 mio.idl 파일을 인클루드한다.
    #include "mio.idl"
  2. CORBA IDL로 정의된 서버의 interface가 ObjectMIO interface를 상속받게 한다.
    interface CommunicationFactory : ObjectMIO { ... }
  3. 서버의 구동 프로그램에서 서비스 객체들을 생성시키기 전에 서버 레벨 MIO를 생성시키고 초기화한다. 초기화 과정에서는 생성된 MIO 객체를 cMSO에게 등록시키고 서버의 구동 시작을 알리는 이벤트를 생성시키는 일을 한다.
    MIO_i *mio_ptr = init_mio("Communication", "amazon.postech.ac.kr", 1.2);
    MIO의 생성함수의 파라미터는 다음과 같다.
    • "Communication" : 서버의 이름
    • "amazon.postech.ac.kr" : 관리 도메인의 이름, cMSO가 떠 있는 호스트의 이름과 같다.
    • 1.2 : 서버의 구현 버젼
  4. 생성된 서비스 객체에 대한 각 객체의 레퍼런스를 MIO에게 추가시키고 각 서비스 객체의 ObjectMIO에 서버 레벨 MIO의 레퍼런스를 세팅하는 과정이다. Communication::CommunicationFactory_var cf = new CommunicationFactory_i;
    ObjectMIO_ptr temp_mio;
    temp_mio = cf;
    temp_mio->set_mio_ptr(mio_ptr);
    mio_ptr->add_object(temp_mio);
  5. 서비스 객체의 구현 클래스의 헤더에 MIO 객체를 위한 헤더 파일을 인클루드 한다.
    #include "mio_i.h"
  6. 다른 인터페이스의 상속때와 마찬가지로 각 서비스 객체의 구현 클래스들이 ObjectMIO 객체의 구현 클래스를 상속받게 한다.
    class CommunicationFactory_i
    : public Communication::CommunicationFactoryBOAImpl,
    public ObjectMIO_i { ... }
  7. 서비스 객체들의 각 호출 함수의 시작 부분에서 count_requests() 를 부른다. 이는 각 객체에 대한 서비스 함수 호출 횟수를 세기 위한 것이다.
    Communication::Port_ptr CommunicationFactory_i:: create_port(
    Communication::CommunicationKind ck, CORBA::Environment &IT_env)
    { count_requests();
    ...
  8. 서비스 객체들의 각 호출 함수 중에서 에러를 처리하는 부분에서 count_request_errors() 를 부른다. 이는 각 객체에 대한 서비스 함수 호출 횟수 중 에러를 발생시키는 횟수를 세기 위한 것이다.

How to Compile Managed Server with Management Interfaces

  1. 서버를 컴파일하기 위한 makefile에 makefile.mgmt를 추가시킨다.
    include ../../../makefile.mgmt
    이 파일에는 관리 인터페이스의 절대 경로 등을 비롯한 갖가지 Variable들이 설정되어 있다.
  2. IDL 파일을 컴파일할때 $(IFLAGS)를 추가시킨다.
    $(IDL) $(IDLFLAGS) $(IFLAGS) Communication.idl
    이 플래그에는 같이 컴파일하여야하는 관리 인터페이스 등에 대한 경로가 설정되어 있다.
  3. 서버를 위한 오브젝트 파일 리스트에 $(MO_SOBJS)를 추가시킨다.
  4. 서버에 대한 클라이언트를 위한 오브젝트 파일 리스트에 $(MO_COBJS)를 추가시킨다.

comment to konga@postech.ac.kr

[ CorbaMan Home | DPE Lab Home | POSTECH Home ]