콘텐츠로 이동

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의 예제를 참고한다.