5. CheckServer API#
CheckServer API 개요#
Altibase CheckServer API는 Altibase 서버가 비정상 종료했는지를 감시하기 위한 함수들로 구성되어 있으며, 이를 사용해서 응용프로그램을 개발할 수 있다. CheckServer API는 CheckServer 유틸리티와 같은 기능을 제공한다. 이 툴에 대한 자세한 설명은 Utilities Manual 을 참고한다.
다음의 표에 CheckServer API의 함수를 정리하였다.
함수 이름 | 설명 |
---|---|
altibase_check_server_init | CheckServer 핸들을 할당한다 |
altibase_check_server_final | 핸들과 관련된 모든 자원과 핸들을 해제한다 |
altibase_check_server | Altibase 서버가 비정상 종료했는지를 감시한다 |
altibase_check_server_cancel | CheckServer의 실행을 종료한다 |
제약사항#
-
CheckServer API 는 멀티 쓰레드 프로그램에서는 사용할 수 없다.
-
CheckServer API 를 사용한 응용프로그램은 로컬 호스트 (즉, 응용프로그램과 같은 장비)에 실행 중인 Altibase 서버를 감시하는 데만 사용할 수 있다.
-
CheckServer API 를 사용한 응용프로그램을 2개 이상 동시에 실행하면 오류가 발생한다.
CheckServer API 사용#
헤더 파일#
응용 프로그램에서 포함해야 하는 헤더파일이다.
$ALTIBASE_HOME/include/chksvr.h
라이브러리 파일#
CheckServer API를 사용해서 작성한 응용 프로그램의 빌드시 필요한 라이브러리 파일은 $ALTIBASE_HOME/lib 디렉터리에 존재한다. CheckServer API 응용프로그램은 다음의 라이브러리 파일을 반드시 링크해야 한다.
- UNIX libchksvr.a, libaltiutil.a
샘플#
CheckServer API를 사용해서 작성한 샘플 응용 프로그램은 $ALTIBASE_HOME/sample/CHECKSERVER 디렉터리에서 찾을 수 있다.
CheckServer API 데이터 구조체#
이 절은 CheckServer API로 응용프로그램 작성시 사용해야 할 C 데이터 타입을 설명한다. 이들 데이터 타입은 위의 절에서 언급한 헤더파일에 정의되어 있다.
CheckServer 핸들#
CheckServer 핸들은 CheckServer API 라이브러리 내에 정의된 자료형을 참조한다. 이 자료형은 CheckServer API를 사용하는 응용프로그램의 동작과 관련된 정보를 저장하고 있다.
- ALTIBASE_CHECKSERVER_HANDLE
CheckServer 핸들. 이는 Altibase 서버를 감시하는 함수 호출시에 주로 사용된다. CheckServer 핸들은 altibase_check_server_init() 으로 할당하고, altibase_check_server_final()로 해제할 수 있다.
CheckServer API#
이 절은 CheckServer API의 각 함수를 자세히 설명한다.
각 함수마다 다음의 항목이 제공된다.
-
함수명
-
구문
-
인자
-
결과값
-
설명
-
진단
-
관련 함수
-
예제
altibase_check_server#
이 함수는 Altibase 서버 프로세스가 실행중인지를 확인한다.
구문#
int altibase_check_server (
ALTIBASE_CHECK_SERVER_HANDLE handle );
인자#
인자 | 입출력 | 설명 |
---|---|---|
handle | 입력 | CheckServer 핸들 |
결과값#
ALTIBASE_CS_SERVER_STOPPED, ALTIBASE_CS_ERROR, 또는ALTIBASE_CS_INVALID_HANDLE
Altibase 서버가 비정상 종료하면, 이 함수는 ALTIBASE_CS_SERVER_STOPPED 를 반환한다.
설명#
이 함수가 호출되면, $ALTIBASE_HOME/trc 디렉터리에 checkserver.pid 파일이 생성된다. 이 파일은 다른 응용프로그램에서 이 함수가 호출되거나 CheckServer 유틸리티가 실행되는 것을 방지한다. altibase_check_server_final() 함수를 호출하면 이 파일은 삭제된다.
Altibase 서버가 실행 중일 때 이 함수가 호출되면, 이 함수는 에러가 발생하거나 Altibase 서버가 종료하는 것을 감지하거나 또는 altibase_check_server_cancel() 이 호출될 때까지 응답을 하지 않는다.
관련 함수#
- altibase_check_server_init
- altibase_check_server_final
- altibase_check_server_cancel
예제#
int main()
{
ALTIBASE_CHECK_SERVER_HANDLE handle = ALTIBASE_CHECK_SERVER_NULL_HANDLE;
char *homeDir = NULL;
int rc;
rc = altibase_check_server_init( &handle, homeDir );
if ( rc != ALTIBASE_CS_SUCCESS )
{
printf( "altibase_check_server_init() failed: %d\n", rc );
}
rc = altibase_check_server(handle);
if ( rc == ALTIBASE_CS_SERVER_STOPED )
{
printf( "Server stopped.\n" );
}
else
{
printf( "An error has occured: %d\n", rc );
}
if ( handle != ALTIBASE_CHECK_SERVER_NULL_HANDLE )
{
altibase_check_server_final(&handle);
}
return 0;
}
altibase_check_server_final#
이 함수는 핸들과 관련된 자원과 핸들을 해제한다.
구문#
int altibase_check_server_final (
ALTIBASE_CHECK_SERVER_HANDLE * handle );
인자#
인자 | 입출력 | 설명 |
---|---|---|
handle | 입력 | 해제할 CheckServer 핸들을 가리키는 포인터 |
결과값#
ALTIBASE_CS_SUCCESS, ALTIBASE_CS_ERROR, 또는ALTIBASE_CS_INVALID_HANDLE
설명#
check_server_final()은 명시한 핸들과 관련된 모든 자원을 해제한다.
또한 이 함수는 altibase_check_server() 호출 시에 생성된 checkserver.pid 파일을 삭제한다. CheckServer API를 사용한 응용프로그램을 kill 같은 명령어로 종료하면, checkserver.pid 파일은 파일 시스템에 남아 있게 된다. 이 경우 CheckServer 유틸리티를 실행하거나 altibase_check_server()를 호출하는 응용프로그램을 실행하려면 이 파일을 수동으로 삭제해야 한다.
관련 함수#
altibase_check_server_init
예제#
altibase_check_server의 예제를 참고한다.
altibase_check_server_init#
이 함수는 CheckServer 핸들을 할당한다.
구문#
int altibase_check_server_init (
ALTIBASE_CHECK_SERVER_HANDLE * handle,
char * home_dir );
인자#
인자 | 입출력 | 설명 |
---|---|---|
handle | 출력 | 새로 할당된 데이터 구조체에 대한 핸들이 반환될 버퍼를 가리키는 포인터 |
home_dir | 입력 | $ALTIBASE_HOME 디렉터리를 지정해야 한다 |
결과값#
ALTIBASE_CS_SUCCESS 또는 ALTIBASE_CS_ERROR
설명#
이 함수는 CheckServer 동작과 관련된 정보를 저장하기 위한 메모리를 할당하고 이 메모리를 가리키는 포인터를 handle 인자에 반환한다.
CheckServer API를 사용한 응용프로그램 하나는 한 개의 Altibase 서버만 감시할 수 있다. 이 Altibase 서버의 위치는 home_dir 인자에 지정한다. home_dir을 NULL로 명시하면, ALTIBASE_HOME 환경변수 값이 사용된다.
오직 하나의 CheckServer 핸들만 한 응용프로그램 내에서 사용될 수 있다. 또한 CheckServer 핸들은 동시에 여러 쓰레드에서 공유될 수 없다.
관련 함수#
altibase_check_server
예제#
altibase_check_server의 예제를 참고한다.
altibase_check_server_cancel#
이 함수는 명시한 핸들에 연관된 altibase_check_server() 함수의 수행을 중지한다.
구문#
int altibase_check_server_cancel (
ALTIBASE_CHECK_SERVER_HANDLE handle);
인자#
인자 | 입출력 | 설명 |
---|---|---|
handle | 입력 | 중지할 CheckServer 핸들 |
결과값#
ALTIBASE_CS_SUCCESS, ALTIBASE_CS_ERROR 또는 ALTIBASE_CS_INVALID_HANDLE
설명#
멀티 쓰레드 응용프로그램에서 한 쓰레드에서 altibase_check_server()함수로 실행한 CheckServer 작동을 다른 쓰레드에서 altibase_check_server_cancel()을 호출하여 중지할 수 있다. altibase_check_server_cancel() 호출이 성공하면, altibase_check_server() 는 중지되고 ALTIBASE_CS_ABORTED_BY_USER 값을 반환한다.
altibase_check_server_cancel() 이 호출되고 altibase_check_server () 의 실행이 실제로 종료하기 까지는 다소 시간이 걸릴 수 있다.
altibase_check_server_cancel() 수행 후, altibase_check_server() 가 결과를 반환하기 전에 altibase_check_server_cancel() 을 또 다시 호출하면 altibase_check_server_cancel() 이 올바르게 동작되는 것을 보장하지 않는다.
관련 함수#
altibase_check_server
예제#
altibase_check_server의 예제를 참고한다.