Developer's Guides for
How to Instrument Management Codes in Managed Servers
- 관리되고자 하는 서버의 IDL 파일에 mio.idl 파일을 인클루드한다.
#include "mio.idl"
- CORBA IDL로 정의된 서버의 interface가 ObjectMIO interface를
상속받게 한다.
interface CommunicationFactory : ObjectMIO { ... }
- 서버의 구동 프로그램에서 서비스 객체들을 생성시키기 전에 서버 레벨
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 : 서버의 구현 버젼
- 생성된 서비스 객체에 대한 각 객체의 레퍼런스를 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);
- 서비스 객체의 구현 클래스의 헤더에 MIO 객체를 위한 헤더 파일을 인클루드
한다.
#include "mio_i.h"
- 다른 인터페이스의 상속때와 마찬가지로 각 서비스 객체의 구현 클래스들이
ObjectMIO 객체의 구현 클래스를 상속받게 한다.
class CommunicationFactory_i
: public Communication::CommunicationFactoryBOAImpl,
public ObjectMIO_i { ... }
- 서비스 객체들의 각 호출 함수의 시작 부분에서
count_requests() 를 부른다. 이는 각 객체에 대한
서비스 함수 호출 횟수를 세기 위한 것이다.
Communication::Port_ptr CommunicationFactory_i:: create_port(
Communication::CommunicationKind ck, CORBA::Environment &IT_env)
{
count_requests();
...
- 서비스 객체들의 각 호출 함수 중에서 에러를 처리하는 부분에서
count_request_errors() 를 부른다. 이는 각 객체에 대한
서비스 함수 호출 횟수 중 에러를 발생시키는 횟수를 세기 위한 것이다.
How to Compile Managed Server with Management Interfaces
- 서버를 컴파일하기 위한 makefile에 makefile.mgmt를 추가시킨다.
include ../../../makefile.mgmt
이 파일에는 관리 인터페이스의 절대 경로 등을 비롯한 갖가지 Variable들이
설정되어 있다.
- IDL 파일을 컴파일할때
$(IFLAGS)를 추가시킨다.
$(IDL) $(IDLFLAGS) $(IFLAGS) Communication.idl
이 플래그에는 같이 컴파일하여야하는 관리 인터페이스 등에 대한
경로가 설정되어 있다.
- 서버를 위한 오브젝트 파일 리스트에
$(MO_SOBJS)를
추가시킨다.
- 서버에 대한 클라이언트를 위한 오브젝트 파일 리스트에
$(MO_COBJS)를 추가시킨다.
[ CorbaMan Home
| DPE Lab Home
| POSTECH Home
]