API

본 장에서는 TmaxGrid를 이용하여 개발할 수 있는 C, JAVA API를 설명한다.

1. C Client/Server API

다음은 C Client/Server API에 대한 설명이다.

API 설명

tgstrerror

TmaxGrid API 사용할 때 발생하는 gqerrno에 해당하는 번호의 메시지를 출력한다.

tmax_grid_create

Key를 생성한다.

tmax_grid_create2

Key를 생성하고 Key에 value를 설정한다.

tmax_grid_destory

Key를 삭제한다.

tmax_grid_set

Key에 value를 설정한다.

tmax_grid_get

value를 가져오고 해당 Key의 Value는 삭제한다.

tmax_grid_get2

원시 타입 용 API이다. data type과 함께 value를 가져오고 해당 Key의 Value는 삭제한다.

tmax_grid_is_exist

Key가 존재하는지 검사한다.

tmax_grid_count

전체 Key 개수를 참조한다.

tmax_grid_lock

Key 이름으로 Lock을 수행한다.

tmax_grid_unlock

Key 이름으로 Lock을 해제한다.

tmax_grid_set_watcher

해당 Key의 이벤트 발생할 때 호출하는 함수를 등록한다.

tmax_grid_wait_watcher

이벤트 발생할 때까지 timeout으로 지정한 시간 동안 대기한다.

tmax_grid_enqueue

Key 이름으로 데이터를 입력한다.

tmax_grid_dequeue

tmax_grid_enqueue()에 의해서 입력한 Value 중 가장 처음에 입력한 Value를 참조한다.

tmax_grid_dequeue2

원시 타입용 API이다. tmax_grid_enqueue()에 의해서 입력한 Value 중 가장 처음에 입력한 Value를 data type과 같이 참조한다.

tmax_grid_get_children

Key 이름으로 자식 Key 이름의 리스트를 참조한다.

tmax_grid_get_child_with_index

자식 Key의 정보를 담고 있는 grid_KEYLIST_T 핸들러에서 nth번째의 Key에 대한 정보를 grid_KEYINFO_T 구조체에 저장한다.

tmax_grid_keylist_free

자식 Key의 정보를 담고 있는 grid_KEYLIST_T 핸들러의 자원을 해제한다.

tmax_grid_init_key_browser

key browsing을 위한 API로 해당 key와 key의 길이를 통해 browser를 초기화 한다.

tmax_grid_get_next

browsing을 통해 다음 key를 가져 온다.

tmax_grid_init_bulk_handle

다수의 key/value 쌍을 get/set 하기 위해 handler를 초기화 한다.

tmax_grid_set_bulk_handle

한 쌍의 key 혹은 key/value를 handler에 등록한다.

tmax_grid_destroy_bulk_handle

handler 자원을 해제하여 반환한다.

tmax_grid_bulk_set

handler에 등록된 모든 key/value 쌍을 설정한다.

tmax_grid_bulk_get

handler에 등록된 모든 key에 해당하는 value를 가져오고 value는 삭제한다.

1.1. tgstrerror

TmaxGrid API 사용할 때 발생하는 tgerrno에 해당하는 번호의 메시지를 출력한다.

  • 프로토타입

    #include <usrinc/tmaxapi.h>
    char *tgstrerror(int tgerrno)
  • 파라미터

    파라미터 설명

    tgerrno

    출력할 에러 번호이다.

  • 반환값

    반환값 설명

    에러 메시지

    에러 코드에 대한 메시지가 있는 경우이다.

1.2. tmax_grid_create

Key를 생성한다. Key를 생성할 때 key의 타입을 지정해야 한다.

만약 생성하려는 Node에 대해서 enqueue, dequeue를 사용하거나 Lock, Unlock을 사용하기 위해서는 반드시 TG_QUEUE 또는 TG_LOCK 타입으로 설정해야 한다. 해당 타입으로 생성된 Node에는 enqueue, dequeue, Lock, Unlock API를 사용하는 것 이외의 방법으로 Child Node를 생성하는 것은 불가능하다. 또한 이들 타입은 항상 TG_PERSISTENT 타입으로 생성된다. TG_TEMPORARY로 생성된 Node의 Child Node를 생성할 때 TG_PERSISTENT로 생성하면 안된다.

TG_TEMPORARY 타입의 Node가 삭제될 때 모든 Child Node가 함께 삭제되므로 주의해야 한다.

  • 프로토타입

    #include <usrinc/tmaxapi.h>
    int tmax_grid_create(char *key, int keylen, int flags)
  • 파라미터

    파라미터 설명

    key

    생성할 Key 이름이다. 127Byte를 넘을 수 없다.

    keylen

    Key의 길이이다.

    flags

    동작 방식을 결정한다.

    • TG_PERSISTENT

      생성한 클라이언트가 종료해도 삭제되지 않는다.

    • TG_TEMPORARY

      생성한 클라이언트가 종료하면 자동으로 삭제되거나 timeout이 지날 경우 자동으로 삭제된다.

    • TG_QUEUE

      enqueue, dequeue을 사용할 Key를 생성한다.

    • TG_LOCK

      Lock, Unlock을 사용할 Key를 생성한다.

  • 반환값

    반환값 설명

    >= 0

    함수 호출에 성공한 경우이다.

    < 0

    함수 호출에 실패한 경우이다. tgerrno에 에러 코드가 설정된다.

  • 오류

    tmax_grid_create()가 정상적으로 수행되지 않을 경우 tgerrno에 다음 값 중 하나가 설정된다.

    에러 코드 설명

    [TGEINVAL]

    Key가 NULL이거나 key_len <=0일 경우 또는 Key의 길이가 128Byte가 넘어갈 경우 또는 flags에 적절하지 않은 값이 지정된 경우이다.

    [TGEOS]

    Tmax 시스템에 에러가 발생한 경우로 자세한 정보는 로그 파일에 기록된다.

    [TGENOMEM]

    메모리가 부족하여 할당에 실패한 경우 발생한다.

    [TGEKEY]

    Key를 정상적으로 인식하지 못하는 경우이다.

    [TGEMAXCHL]

    환경설정의 Max Child 제한에 도달해서 더 이상 Child Key를 생성할 수 없는 경우이다.

    [TGEPROTO]

    TG_QUEUE 또는 TG_LOCK 타입의 Key에 대한 Child Key를 생성한 경우이다.

    [TGESHMFULL]

    TmaxGrid의 공유 메모리의 공간 부족할 경우 또는 환경설정 TGMAX 최댓값까지 Key가 생성되어서 더 이상 Key를 생성할 수 없는 경우이다.

    [TGEDUPKEY]

    Key 이름이 중복될 경우이다.

    [TGECONF]

    TmaxGrid가 설정되지 않은 경우이다.

    [TGEENABLE ]

    TmaxGrid가 동작하지 않는 경우이다.

1.3. tmax_grid_create2

Key를 생성한다. Key를 생성하면서 함께 Value를 입력할 수 있고, watcher도 함께 등록할 수 있다. 자세한 정보는 tmax_grid_create, tmax_grid_set, tmax_grid_set_watcher API를 참고한다. data가 NULL이 아닌 경우 value를 입력한다. Callback 함수가 NULL이 아닌 경우 watcher가 설정된다.

  • 프로토타입

    #include <usrinc/tmaxapi.h>
    int  tmax_grid_create2(char *key, int keylen, char *data, int len,
    TG_WATHCER_CALLBACK callback, void *args, int flags)
  • 파라미터

    파라미터 설명

    key

    생성할 Key 이름이다. 127Byte를 넘을 수 없다.

    keylen

    Key의 길이이다.

    data

    Value이다. tpalloc으로 할당받은 포인터이다. NULL일 경우 Value를 저장하지 않고 Key만 생성한다.

    len

    data의 길이이다.

    callback

    watcher 등록 후 이벤트가 발생할 때 호출할 Callback 함수 포인터이다.

    args

    callback를 함수 호출하는 경우 넘겨줄 인자 포인터이다.

    flags

    동작 방식을 결정한다.

    • TG_PERSISTENT

      생성한 클라이언트가 종료해도 삭제되지 않는다.

    • TG_TEMPORARY

      생성한 클라이언트가 종료하면 자동으로 삭제된다.

    • TG_QUEUE

      enqueue, dequeue을 사용할 Key를 생성한다.

    • TG_LOCK

      Lock, Unlock을 사용할 Key를 생성한다.

    • TG_WATCHER_PERSISTENT

      watcher를 등록할 때 영원히 해당 클라이언트에게 공지를 수행한다. Key가 삭제되면 watcher는 자동으로 삭제된다.

    • TG_WATCHER_ONCE

      watcher를 등록할 때 한 번만 공지하고 그 이후로는 공지하지 않는다. 만약 더 관심이 있다면 watcher를 재등록해야 한다.

    • TG_EVENT_DELETE_SELF

      자신의 Key가 삭제되었을 때 이벤트를 수신한다. callback 함수에서 해당 이벤트를 수신하게 되면 등록된 watcher가 삭제되므로, watcher를 재등록해야 한다.

    • TG_EVENT_CREATE_CHILD

      Child Key가 생성되었을 때 이벤트를 수신한다.

    • TG_EVENT_SET_SELF

      자신의 Key에 데이터가 set되었을 때 이벤트를 수신한다.

    • TG_EVENT_GET_SELF

      자신의 Key에 데이터가 get되었을 때 이벤트를 수신한다.

  • 반환값

    반환값 설명

    >= 0

    함수 호출에 성공한 경우이다.

    < 0

    함수 호출에 실패한 경우이다. tgerrno에 에러 코드가 설정된다.

  • 오류

    tmax_grid_create2()가 정상적으로 수행되지 않을 경우 tgerrno에 다음 값 중 하나가 설정된다.

    에러 코드 설명

    [TGEINVAL]

    Key가 NULL이거나 key_len <=0일 경우 또는 Key의 길이가 128Byte가 넘어갈 경우 또는 flags에 적절하지 않은 값이 지정된 경우이다.

    [TGEOS]

    Tmax 시스템에 에러가 발생한 경우로 자세한 정보는 로그 파일에 기록된다.

    [TGENOMEM]

    메모리가 부족하여 할당에 실패한 경우 발생한다.

    [TGEKEY]

    Key를 정상적으로 인식하지 못하는 경우이다.

    [TGEMAXCHL]

    환경설정의 Max Child 제한에 도달해서 더 이상 Child Key를 생성할 수 없는 경우이다.

    [TGEPROTO]

    TG_QUEUE 또는 TG_LOCK 타입의 Key에 대한 Child Key를 생성한 경우이다.

    [TGESHMFULL]

    TmaxGrid의 공유 메모리의 공간 부족할 경우 또는 환경설정 TGMAX 최댓값까지 Key가 생성되어서 더 이상 Key를 생성할 수 없는 경우이다.

    [TGEDUPKEY]

    Key 이름이 중복될 경우이다.

    [TGECONF]

    TmaxGrid가 설정되지 않은 경우이다.

    [TGEENABLE ]

    TmaxGrid가 동작하지 않는 경우이다.

1.4. tmax_grid_destroy

Key를 삭제한다. value까지 함께 삭제한다. 기본적으로 Child Key가 존재하면 삭제되지 않지만, flags를 설정하면 persistent type에 한정하여 Child Key까지 함께 삭제할 수 있다. 또한 Key가 삭제될 때 watcher가 등록되어 있으면 설정된 이벤트를 통지 후 함께 삭제된다.

  • 프로토타입

    #include <usrinc/tmaxapi.h>
    int  tmax_grid_destroy(char *key, int keylen, int flags)
  • 파라미터

    파라미터 설명

    key

    생성할 Key 이름이다. 127Byte를 넘을 수 없다.

    keylen

    Key의 길이이다.

    flags

    동작 방식을 결정한다.

    • TG_CHILDREN - Child Key까지 함께 삭제한다.

  • 반환값

    반환값 설명

    >= 0

    함수 호출에 성공한 경우이다.

    < 0

    함수 호출에 실패한 경우이다. tgerrno에 에러 코드가 설정된다.

  • 오류

    tmax_grid_destroy()가 정상적으로 수행되지 않을 경우 tgerrno에 다음 값 중 하나가 설정된다.

    에러 코드 설명

    [TGEINVAL]

    Key가 NULL이거나 key_len <=0일 경우 또는 Key의 길이가 128Byte가 넘어갈 경우 또는 flags에 적절하지 않은 값이 지정된 경우이다.

    [TGEOS]

    Tmax 시스템에 에러가 발생한 경우로 자세한 정보는 로그 파일에 기록된다.

    [TGENOMEM]

    메모리가 부족하여 할당에 실패한 경우 발생한다.

    [TGEKEY]

    Key를 정상적으로 인식하지 못하는 경우이다.

    [TGESHMFULL]

    TmaxGrid의 공유 메모리의 공간 부족할 경우 또는 환경설정 GQMAX 최댓값까지 Key가 생성되어서 더 이상 Key를 생성할 수 없는 경우이다.

    [TGECONF]

    TmaxGrid가 설정되지 않은 경우이다.

    [TGEENABLE ]

    TmaxGrid가 동작하지 않는 경우이다.

    [TGEDELCHL ]

    Child Key가 존재하여 삭제가 실패한 경우이다.

    [TGEPROTO]

    Child Key에 TG_QUEUE 또는 TG_LOCK 타입의 Node가 존재하거나 이들 타입의 Child Key를 삭제할 경우이다.

    [TGENOKEY]

    해당하는 Key가 없는 경우이다.

1.5. tmax_grid_set

Key에 Value를 입력한다. Key에 Value가 존재한다면 기존의 Value는 삭제되고 새로운 Value로 갱신된다. Key에 watcher가 등록되어 있을 경우 기존의 Value가 삭제될 때는 이벤트가 발생하지 않는다. TG_EVENT_SET_SELF 이벤트가 등록되어 있으면 이벤트를 통지한다. TG_QUEUE 또는 TG_LOCK 타입의 Key에도 Value 입력이 가능하다. 하지만 이들 타입의 Child Key에는 value를 입력할 수 없다.

  • 프로토타입

    #include <usrinc/tmaxapi.h>
    int tmax_grid_set(char *key, int keylen, int type, void *data, int len, int flags)
  • 파라미터

    파라미터 설명

    key

    생성할 Key 이름이다. 127Byte를 넘을 수 없다.

    keylen

    Key의 길이이다.

    type

    해당하는 Key의 value type이다.

    tpalloc한 데이터의 경우 0을 입력하고 원시 타입의 경우 다음을 입력한다.

    • TMAX_GRID_INT

    • TMAX_GRID_FLOAT

    • TMAX_GRID_LONG

    • TMAX_GRID_SHORT

    • TMAX_GRID_DOUBLE

    • TMAX_GRID_STRING

    원시 타입을 사용할 때는 tpalloc하지 않는다.

    data

    입력할 Value이다. tpalloc으로 할당한 포인터나 실제 원시 데이터이다.

    len

    data의 길이이다.

    flags

    사용하지 않는다.

  • 반환값

    반환값 설명

    >= 0

    함수 호출에 성공한 경우이다.

    < 0

    함수 호출에 실패한 경우이다. tgerrno에 에러 코드가 설정된다.

  • 오류

    tmax_grid_set()가 정상적으로 수행되지 않을 경우 tgerrno에 다음 값 중 하나가 설정된다.

    에러 코드 설명

    [TGEINVAL]

    Key가 NULL이거나 key_len <=0일 경우 또는 Key의 길이가 128Byte가 넘어갈 경우 또는 flags에 적절하지 않은 값이 지정된 경우이다.

    [TGEOS]

    Tmax 시스템에 에러가 발생한 경우로 자세한 정보는 로그 파일에 기록된다.

    [TGENOMEM]

    메모리가 부족하여 할당에 실패한 경우 발생한다.

    [TGEKEY]

    Key를 정상적으로 인식하지 못하는 경우이다.

    [TGEPROTO]

    TG_QUEUE 또는 TG_LOCK 타입 Node의 Child Node에 데이터를 입력하려는 경우이다.

    [TGESHMFULL]

    TmaxGrid의 공유 메모리의 공간 부족할 경우 또는 환경설정 TGMAX 최댓값까지 Key가 생성되어서 더 이상 Key를 생성할 수 없는 경우이다.

    [TGEITYPE]

    data가 잘못된 SDL이나 FDL일 경우이다.

    [TGECONF]

    TmaxGrid가 설정되지 않은 경우이다.

    [TGEENABLE ]

    TmaxGrid가 동작하지 않는 경우이다.

1.6. tmax_grid_get

key의 value를 가져오고 해당 key의 value는 삭제한다. value를 삭제하지 않고 가져오기 위해서는 flags를 지정해야 한다. 참고로 Key를 삭제하려면 tmax_grid_destroy 함수를 호출해야 한다.

TG_QUEUE 또는 TG_LOCK 타입의 Child Key의 경우에는 value를 가져올 수 없다.

  • 프로토타입

    #include <usrinc/tmaxapi.h>
    int  tmax_grid_get(char *key, int keylen, int *type, char **data, int *len, int flags)
  • 파라미터

    파라미터 설명

    key

    생성할 Key 이름이다. 127Byte를 넘을 수 없다.

    keylen

    Key의 길이이다.

    type

    함수 수행 후 데이터의 type을 반환한다.

    data

    함수 수행 후 Value를 반환한다. tpalloc이나 fballoc으로 미리 할당해야 한다.

    len

    함수 수행 후 Value의 길이를 할당한다.

    flags

    동작 방식을 결정한다.

    • TG_GET_PEEK

      데이터를 가져오고 해당 Node의 데이터를 삭제하지 않는다.

  • 반환값

    반환값 설명

    >= 0

    함수 호출에 성공한 경우이다.

    < 0

    함수 호출에 실패한 경우이다. tgerrno에 에러 코드가 설정된다.

  • 오류

    tmax_grid_get()가 정상적으로 수행되지 않을 경우 tgerrno에 다음 값 중 하나가 설정된다.

    에러 코드 설명

    [TGEINVAL]

    Key가 NULL이거나 key_len <=0일 경우 또는 Key의 길이가 128Byte가 넘어갈 경우 또는 flags에 적절하지 않은 값이 지정된 경우이다.

    [TGEOS]

    Tmax 시스템에 에러가 발생한 경우로 자세한 정보는 로그 파일에 기록된다.

    [TGENOMEM]

    메모리가 부족하여 할당에 실패한 경우 발생한다.

    [TGEKEY]

    Key를 정상적으로 인식하지 못하는 경우이다.

    [TGECONF]

    TmaxGrid가 설정되지 않은 경우이다.

    [TGEENABLE ]

    TmaxGrid가 동작하지 않는 경우이다.

    [TGEOTYPE]

    data tpalloc으로 할당하지 않았을 경우 또는 가져온 데이터가 올바르지 않은 SDL이나 FDL 타입일 경우이다.

1.7. tmax_grid_get2

key의 원시 타입의 value를 가져오고 해당 key의 value는 삭제한다. TG_GET_TYPE flags를 설정하여 먼저 type을 가져올 수 있다. value를 삭제하지 않고 가져오기 위해서는 flags를 지정해야 한다. 참고로 Key를 삭제하려면 tmax_grid_destroy 함수를 호출해야 한다.

TG_QUEUE 또는 TG_LOCK 타입의 Child Key의 경우에는 value를 가져올 수 없다.

  • 프로토타입

    #include <usrinc/tmaxapi.h>
    int tmax_grid_get2(char *key, int keylen, int *type, void *data, int *len, int flags)
  • 파라미터

    파라미터 설명

    key

    생성할 Key 이름이다. 127Byte를 넘을 수 없다.

    keylen

    Key의 길이이다.

    type

    해당하는 Key의 value type을 반환한다.

    • TMAX_GRID_INT

    • TMAX_GRID_FLOAT

    • TMAX_GRID_LONG

    • TMAX_GRID_SHORT

    • TMAX_GRID_DOUBLE

    • TMAX_GRID_STRING

    data

    함수 수행 후 Value를 반환한다. 타입에 따라 캐스팅 후 사용한다.

    len

    함수 수행 후 Value의 길이를 할당한다.

    flags

    동작 방식을 결정한다.

    • TG_GET_PEEK

      데이터를 가져오고 해당 Node의 데이터를 삭제하지 않는다.

    • TG_GET_TYPE

      데이터의 type을 가져온다. 해당 Node의 데이터를 삭제하지 않는다.

  • 반환값

    반환값 설명

    >= 0

    함수 호출에 성공한 경우이다.

    < 0

    함수 호출에 실패한 경우이다. tgerrno에 에러 코드가 설정된다.

  • 오류

    tmax_grid_get2()가 정상적으로 수행되지 않을 경우 tgerrno에 다음 값 중 하나가 설정된다.

    에러 코드 설명

    [TGEINVAL]

    Key가 NULL이거나 key_len <=0일 경우 또는 Key의 길이가 128Byte가 넘어갈 경우 또는 flags에 적절하지 않은 값이 지정된 경우이다.

    [TGEOS]

    Tmax 시스템에 에러가 발생한 경우로 자세한 정보는 로그 파일에 기록된다.

    [TGENOMEM]

    메모리가 부족하여 할당에 실패한 경우 발생한다.

    [TGEKEY]

    Key를 정상적으로 인식하지 못하는 경우이다.

    [TGECONF]

    TmaxGrid가 설정되지 않은 경우이다.

    [TGEENABLE ]

    TmaxGrid가 동작하지 않는 경우이다.

    [TGEOTYPE]

    data tpalloc으로 할당하지 않았을 경우 또는 가져온 데이터가 올바르지 않은 SDL이나 FDL 타입일 경우이다.

1.8. tmax_grid_is_exist

Key가 존재하는지 검사한다.

  • 프로토타입

    #include <usrinc/tmaxapi.h>
    int  tmax_grid_is_exist(char *key, int keylen, int flags)
  • 파라미터

    파라미터 설명

    key

    검사할 Key 이름이다. 127Byte를 넘을 수 없다.

    keylen

    Key의 길이이다.

    flags

    사용하지 않는다.

  • 반환값

    반환값 설명

    0

    Key가 존재하지 않는다.

    1

    Key만 존재하고 Value는 존재하지 않는다.

    2

    Key와 Value 모두 존재한다.

    < 0

    함수 호출에 실패한 경우이다. tgerrno에 에러 코드가 설정된다.

  • 오류

    tmax_grid_is_exist()가 정상적으로 수행되지 않을 경우 tgerrno에 다음 값 중 하나가 설정된다.

    에러 코드 설명

    [TGEINVAL]

    Key가 NULL이거나 key_len <=0일 경우 또는 Key의 길이가 128Byte가 넘어갈 경우 또는 flags에 적절하지 않은 값이 지정된 경우이다.

    [TGEOS]

    Tmax 시스템에 에러가 발생한 경우로 자세한 정보는 로그 파일에 기록된다.

    [TGENOMEM]

    메모리가 부족하여 할당에 실패한 경우 발생한다.

    [TGEKEY]

    Key를 정상적으로 인식하지 못하는 경우이다.

    [TGECONF]

    TmaxGrid가 설정되지 않은 경우이다.

    [TGEENABLE ]

    TmaxGrid가 동작하지 않는 경우이다.

1.9. tmax_grid_count

전체 Key 개수를 참조한다.

  • 프로토타입

    #include <usrinc/tmaxapi.h>
    int  tmax_grid_count(int flags)
  • 파라미터

    파라미터 설명

    flags

    사용 않는다.

  • 반환값

    반환값 설명

    >= 0

    함수 호출에 성공한 경우이다. 반환값이 전체 Key의 개수이다.

    < 0

    함수 호출에 실패한 경우이다. tgerrno에 에러 코드가 설정된다.

  • 오류

    tmax_grid_count()가 정상적으로 수행되지 않을 경우 tgerrno에 다음 값 중 하나가 설정된다.

    에러 코드 설명

    [TGEOS]

    Tmax 시스템에 에러가 발생한 경우로 자세한 정보는 로그 파일에 기록된다.

    [TGENOMEM]

    메모리가 부족하여 할당에 실패한 경우 발생한다.

    [TGECONF]

    TmaxGrid가 설정되지 않은 경우이다.

    [TGEENABLE ]

    TmaxGrid가 동작하지 않는 경우이다.

1.10. tmax_grid_lock

Key 이름으로 Lock을 수행한다. 다른 클라이언트 또는 서버에서 같은 Key 이름으로 Lock을 이미 수행한 경우 이들 프로세스에서 Unlock을 수행해서 자신의 차례가 돌아 올 때까지 타임아웃으로 지정한 시간 동안 대기한다.

Lock이 성공한 이후에는 반드시 Unlock을 수행해야 한다. 만약 프로그램이 Unlock을 수행하지 않고 종료할 경우 자동으로 Unlock 처리가 되며, 다음 차례의 프로세스에서 Lock을 획득한다. Key는 반드시 TG_LOCK으로 생성되어야 한다. TG_LOCK으로 생성한 key에는 data를 get/set 할 수 없다. Key를 생성하지 않고 해당 키에 Lock을 수행할 경우 자동으로 해당하는 이름의 Key를 생성한다. lock이 수행될 때에는 key에 자동으로 부여된 번호를 가지는 Child Key를 생성하고, Unlock이 호출될 때 생성되었던 Child Key를 삭제한다. Key 이름의 길이를 작게 줄 것을 권장한다. 한 프로세스 안에서 같은 Key 이름으로 재귀적으로 호출할 수 있으며, 이 경우에는 반드시 같은 횟수만큼 Unlock을 수행해야 한다. 또한 이 경우에는 단일한 Child Key만 생성된다. shared lock을 생성하려면 flags에 TG_SHARED_LOCK로 설정한다. shared lock의 경우 동시에 여러 노드가 lock을 획득할 수 있다. 이전 자식 노드가 unlock 되면 이후 연속된 자식 노드들이 shared lock일 경우 lock을 모두 한꺼번에 획득한다. 이 후 모든 shared lock이 unlock되면 대기하고 있던 TG_EXCLUSIVE_LOCK으로 설정된 자식 노드가 lock을 획득하게 된다.

  • 프로토타입

    #include <usrinc/tmaxapi.h>
    int  tmax_grid_lock(char *key, int keylen, int timeout, int flags)
  • 파라미터

    파라미터 설명

    key

    생성할 Key 이름이다. 127Byte를 넘을 수 없다.

    keylen

    Key의 길이이다.

    timeout

    Lock을 획득할 수 있는 기다리는 시간이다. (단위 : 초)

    flags

    TG_EXCLUSIVE_LOCK, TG_SHARED_LOCK로 설정한다.

  • 반환값

    반환값 설명

    >= 0

    함수 호출에 성공한 경우이다.

    < 0

    함수 호출에 실패한 경우이다. tgerrno에 에러 코드가 설정된다.

  • 오류

    tmax_grid_lock()가 정상적으로 수행되지 않을 경우 tgerrno에 다음 값 중 하나가 설정된다.

    에러 코드 설명

    [TGEINVAL]

    Key가 NULL이거나 key_len <=0일 경우 또는 Key의 길이가 128Byte가 넘어갈 경우 또는 flags에 적절하지 않은 값이 지정된 경우이다.

    [TGEOS]

    Tmax 시스템에 에러가 발생한 경우로 자세한 정보는 로그 파일에 기록된다.

    [TGENOMEM]

    메모리가 부족하여 할당에 실패한 경우 발생한다.

    [TGEKEY]

    Key를 정상적으로 인식하지 못하는 경우이다.

    [TGEMAXCHL]

    환경설정의 Max Child 제한에 도달해서 더 이상 Child Key를 생성할 수 없는 경우이다.

    [TGEPROTO]

    Key 이름이 TG_LOCK으로 생성된 Key가 아닌 경우이다.

    [TGESHMFULL]

    환경설정의 TGMAX 최댓값까지 Node가 생성되어서 더 이상 Lock을 위한 Child Node를 생성할 수 없는 경우이다.

    [TGEMAXCHL]

    환경설정의 TGMAX_CHILD 제한에 도달해서 더 이상 Lock을 위한 Child Node를 생성할 수 없는 경우이다.

    [TGETIME]

    timeout 동안 Lock 요청이 실패했다.

    [TGECONF]

    TmaxGrid가 설정되지 않은 경우이다.

    [TGEENABLE ]

    TmaxGrid가 동작하지 않는 경우이다.

1.11. tmax_grid_unlock

Key 이름으로 Lock을 해제한다. 다음 차례의 Lock을 수행할 수 있다. 같은 Key 이름을 재귀적으로 Lock을 수행한 경우 반드시 같은 횟수만큼 Unlock을 수행해야 한다.

  • 프로토타입

    #include <usrinc/tmaxapi.h>
    int  tmax_grid_unlock(char *key, int keylen, int flags)
  • 파라미터

    파라미터 설명

    key

    Lock Key 이름이다. 127Byte를 넘을 수 없다.

    keylen

    Key의 길이이다.

    flags

    사용하지 않는다.

  • 반환값

    반환값 설명

    >= 0

    함수 호출에 성공한 경우이다.

    < 0

    함수 호출에 실패한 경우이다. tgerrno에 에러 코드가 설정된다.

  • 오류

    tmax_grid_unlock()가 정상적으로 수행되지 않을 경우 tgerrno에 다음 값 중 하나가 설정된다.

    에러 코드 설명

    [TGEINVAL]

    Key가 NULL이거나 key_len <=0일 경우 또는 Key의 길이가 128Byte가 넘어갈 경우 또는 flags에 적절하지 않은 값이 지정된 경우이다.

    [TGEOS]

    Tmax 시스템에 에러가 발생한 경우로 자세한 정보는 로그 파일에 기록된다.

    [TGENOMEM]

    메모리가 부족하여 할당에 실패한 경우 발생한다.

    [TGEKEY]

    Key를 정상적으로 인식하지 못하는 경우이다.

    [TGECONF]

    TmaxGrid가 설정되지 않은 경우이다.

    [TGEENABLE ]

    TmaxGrid가 미동작한 경우이다.

    [TGENOKEY ]

    Lock을 수행할 때 설정한 Key가 존재하지 않는 경우이다.

1.12. tmax_grid_set_watcher

해당 Key의 이벤트가 발생할 때 호출하는 함수를 등록한다. flags는 Bitwise OR 연산으로 여러 설정을 함께 적용할 수 있다.

watcher가 설정된 상태에서 다시 재설정하면 기존의 이벤트 설정은 새로운 값으로 대체된다. Callback을 NULL을 지정하면 watcher를 해제하며, 해당 key에 대해서 더 이상 이벤트를 받지 않는다.

Callback 함수에서 받을 수 있는 이벤트의 종류는 다음과 같다.

이벤트 설명

TG_EVENT_DELETE_CHILD

설명은 아래의 flags와 동일하다.

TG_EVENT_DELETE_SELF

설명은 아래의 flags와 동일하다.

TG_EVENT_CREATE_CHILD

설명은 아래의 flags와 동일하다.

TG_EVENT_SET_SELF

설명은 아래의 flags와 동일하다.

TG_EVENT_GET_SELF

설명은 아래의 flags와 동일하다.

TG_EVENT_RECOVERED

GQ 서버에 장애가 발생하여 복구되었다. 해당 이벤트를 수신하는 경우 사용자는 watcher를 다시 등록해야 한다.

  • 프로토타입

    #include <usrinc/tmaxapi.h>
    int  tmax_grid_set_watcher(char *key, int keylen, TG_WATHCER_CALLBACK callback,
    void *args, int flags)
  • 파라미터

    파라미터 설명

    key

    Key 이름이다. 127Byte를 넘을 수 없다.

    keylen

    Key의 길이이다.

    callback

    Key의 이벤트가 발생할 때 이를 처리하게 될 함수의 포인터이다. 사용자는 'int CALLBACK(char *key, int keylen, int event_type, void *args);' 타입으로 함수를 구현한다. 각 Key마다 별도의 Callback 함수를 지정할 수 있다.

    args

    해당 Key에 대한 이벤트가 발생해서 Callback 함수가 호출될 때 함께 전달될 사용자 정의 인수이다.

    flags

    동작 방식을 결정한다.

    • TG_WATCHER_PERSISTENT

      watcher 등록 후 이벤트가 발생할 때 계속해서 해당 클라이언트에게 통지한다.

    • TG_WATCHER_ONCE

      watcher 등록 후 한 번만 통지하고 그 이후에는 통지하지 않는다. 만약 더 관심이 있다면 Callback 함수 호출 후 watcher를 재등록해야 한다.

    • TG_EVENT_DELETE_SELF

      자신의 Key가 삭제되었을 때 이벤트를 수신한다. Callback 함수에서 해당 이벤트를 수신하게 되면 등록된 watcher가 삭제되므로, watcher를 재등록 해야 한다.

    • TG_EVENT_CREATE_CHILD

      Child Key가 생성되었을 때 이벤트를 수신한다.

    • TG_EVENT_SET_SELF

      자신의 Key에 tmax_grid_set API를 통해 데이터가 set되었을 때 이벤트를 수신한다. 또한 tmax_grid_enqueue API를 통해 데이터가 입력되었을 때에도 수신한다.

    • TG_EVENT_GET_SELF

      자신의 Key의 데이터가 get되었을 때 이벤트를 수신한다. 만약 tmax_grid_get API를 호출할 때 flags에 TG_GET_PEEK을 설정하면 이벤트는 발생하지 않는다.

    [주의]

    TG_WATCHER_PERSISTENT와 TG_WATCHER_ONCE는 단독으로 사용 할 수 없다. 반드시 아래의 이벤트와 Bitwise OR 연산으로 조합하여 적용해야만 한다.

  • 반환값

    반환값 설명

    >= 0

    함수 호출에 성공한 경우이다.

    < 0

    함수 호출에 실패한 경우이다. tgerrno에 에러 코드가 설정된다.

  • 오류

    tmax_grid_set_watcher()가 정상적으로 수행되지 않을 경우 tgerrno에 다음 값 중 하나가 설정된다.

    에러 코드 설명

    [TGEINVAL]

    Key가 NULL이거나 key_len <=0일 경우 또는 Key의 길이가 128Byte가 넘어갈 경우 또는 flags에 적절하지 않은 값이 지정된 경우이다.

    [TGEOS]

    Tmax 시스템에 에러가 발생한 경우로 자세한 정보는 로그 파일에 기록된다.

    [TGENOMEM]

    메모리가 부족하여 할당에 실패한 경우 발생한다.

    [TGENOKEY]

    Key 이름으로 생성된 Key가 존재하지 않는 경우 또는 watcher 해제할 때 Key 이름으로 설정하지 않았을 경우이다.

    [TGECONF]

    TmaxGrid가 설정되지 않은 경우이다.

    [TGEENABLE ]

    TmaxGrid가 동작하지 않는 경우이다.

1.13. tmax_grid_wait_watcher

이벤트가 발생할 때까지 timeout으로 지정한 시간 동안 대기한다. 하나의 이벤트를 수신하면 수신된 이벤트의 Node로 지정된 Callback 함수가 호출되고 리턴된다.

  • 프로토타입

    #include <usrinc/tmaxapi.h>
    int  tmax_grid_wait_watcher(int timeout, int flags)
  • 파라미터

    파라미터 설명

    timeout

    대기하는 시간이다. (단위 : 초)

    flags

    사용하지 않는 파라미터이다.

  • 반환값

    반환값 설명

    >= 0

    함수 호출에 성공한 경우이다.

    < 0

    함수 호출에 실패한 경우이다. tgerrno에 에러 코드가 설정된다.

  • 오류

    tmax_grid_wait_watcher()가 정상적으로 수행되지 않을 경우 tgerrno에 다음 값 중 하나가 설정된다.

    에러 코드 설명

    [TGEOS]

    Tmax 시스템에 에러가 발생한 경우로 자세한 정보는 로그 파일에 기록된다.

    [TGENOMEM]

    메모리가 부족하여 할당에 실패한 경우 발생한다.

    [TGETIME]

    이벤트가 발생하지 않았을 경우 발생한다.

1.14. tmax_grid_enqueue

Key 이름으로 데이터를 입력한다. 해당하는 Key의 Child Key의 마지막 번호로 데이터가 추가된다. Key 이름은 반드시 TG_QUEUE 타입으로 생성되어야 한다. Key를 생성하지 않았을 경우에는 자동으로 Key를 생성하고 데이터를 입력한다. 순서가 보장된다. Child Key에 대해서 tmax_grid_get, tmax_grid_set API로 직접 데이터에 접근하는 것은 허용하지 않는다. 그러나 Key 이름에 대해서는 가능하다.

  • 프로토타입

    #include <usrinc/tmaxapi.h>
    int tmax_grid_enqueue(char *key, int keylen, int type, void *data, int len, int flags)
  • 파라미터

    파라미터 설명

    key

    생성할 Key 이름이다. 127Byte를 넘을 수 없다.

    keylen

    Key의 길이이다.

    type

    해당하는 Key의 value type이다.

    tpalloc한 데이터의 경우 0을 입력하고 원시 타입의 경우 다음을 입력한다.

    • TMAX_GRID_INT

    • TMAX_GRID_FLOAT

    • TMAX_GRID_LONG

    • TMAX_GRID_SHORT

    • TMAX_GRID_DOUBLE

    • TMAX_GRID_STRING

    원시 타입을 사용할 때는 tpalloc하지 않는다.

    data

    Key에 입력할 Value이다. tpalloc이나 fballoc으로 할당한 데이터만 가능하다. 미리 할당을 해야 한다.

    len

    data의 길이이다.

    flags

    동작 방식을 결정한다.

    • TG_TEMPORARY

      생성한 클라이언트가 종료하면 자동으로 삭제한다. 만약 "/test"라는 키로 enqueue를 한 경우 enqueue의 대상인 "/test/0"만 삭제되고 부모 노드인 "/test"는 삭제되지 않는다.

  • 반환값

    반환값 설명

    >= 0

    함수 호출에 성공한 경우이다.

    < 0

    함수 호출에 실패한 경우이다. tgerrno에 에러 코드가 설정된다.

  • 오류

    tmax_grid_enqueue()가 정상적으로 수행되지 않을 경우 tgerrno에 다음 값 중 하나가 설정된다.

    에러 코드 설명

    [TGEINVAL]

    Key가 NULL이거나 key_len <=0일 경우 또는 Key의 길이가 128Byte가 넘어갈 경우 또는 flags에 적절하지 않은 값이 지정된 경우이다.

    [TGEOS]

    Tmax 시스템에 에러가 발생한 경우로 자세한 정보는 로그 파일에 기록된다.

    [TGENOMEM]

    메모리가 부족하여 할당에 실패한 경우 발생한다.

    [TGEKEY]

    Key를 정상적으로 인식하지 못하는 경우이다.

    [TGEMAXCHL]

    환경설정의 Max Child 제한에 도달해서 더 이상 Child Key를 생성할 수 없는 경우이다.

    [TGEPROTO]

    Key 이름이 TG_QUEUE 타입으로 생성된 Node가 아닌 경우이다.

    [TGESHMFULL]

    TmaxGrid의 공유 메모리의 공간 부족할 경우 또는 환경설정 GQMAX 최댓값까지 Key가 생성되어서 더 이상 Key를 생성할 수 없는 경우이다.

    [TGEDUPKEY]

    Key 이름이 중복될 경우이다.

    [TGECONF]

    TmaxGrid가 설정되지 않은 경우이다.

    [TGEENABLE ]

    TmaxGrid가 동작하지 않는 경우이다.

    [TGEITYPE ]

    data가 잘못된 SDL이나 FDL일 경우 발생한다.

1.15. tmax_grid_dequeue

Key 이름에 해당하는 Child Key의 제일 처음 번호의 Value를 가져오며, 해당 Child Key는 삭제된다. Child Key에 대해서 tmax_grid_get, tmax_grid_set API로 Value에 접근하는 것은 허용하지 않는다. 그러나 Key 이름에 대해서는 가능하다.

  • 프로토타입

    #include <usrinc/tmaxapi.h>
    int  tmax_grid_dequeue(char *key, int keylen, int *type, char **data, int *len, int flags)
  • 파라미터

    파라미터 설명

    key

    Key 이름이다. 127Byte를 넘을 수 없다.

    keylen

    Key의 길이이다.

    type

    함수 수행 후 데이터의 type을 반환한다.

    data

    Key에서 가져올 Value의 버퍼(tpalloc이나 fballoc으로 할당한 데이터만 가능하다. 미리 할당을 해야 한다.)이다. 가져온 데이터가 버퍼의 크기보다 더 크다면 내부적으로 재할당된다.

    len

    Node에서 가져올 데이터의 길이가 저장된다.

    flags

    사용하지 않는다.

  • 반환값

    반환값 설명

    >= 0

    함수 호출에 성공한 경우이다.

    < 0

    함수 호출에 실패한 경우이다. tgerrno에 에러 코드가 설정된다.

  • 오류

    tmax_grid_dequeue()가 정상적으로 수행되지 않을 경우 tgerrno에 다음 값 중 하나가 설정된다.

    에러 코드 설명

    [TGEINVAL]

    Key가 NULL이거나 key_len <=0일 경우 또는 Key의 길이가 128Byte가 넘어갈 경우 또는 flags에 적절하지 않은 값이 지정된 경우이다.

    [TGEOS]

    Tmax 시스템에 에러가 발생한 경우로 자세한 정보는 로그 파일에 기록된다.

    [TGENOMEM]

    메모리가 부족하여 할당에 실패한 경우 발생한다.

    [TGEKEY]

    Key를 정상적으로 인식하지 못하는 경우이다.

    [TGENOKEY]

    해당하는 Key가 없는 경우이다.

    [TGENODATA]

    입력된 데이터가 존재하지 않을 경우이다.

    [TGECONF]

    TmaxGrid가 설정되지 않은 경우이다.

    [TGEENABLE ]

    TmaxGrid가 동작하지 않는 경우이다.

    [TGEOTYPE ]

    data tpalloc으로 할당하지 않았을 경우 또는 가져온 데이터가 올바르지 않은 SDL 또는 FDL 데이터일 경우이다.

1.16. tmax_grid_dequeue2

Key 이름에 해당하는 Child Key의 제일 처음 번호의 원시 타입의 Value를 가져오며, 해당 Child Key는 삭제된다. Child Key에 대해서 tmax_grid_get, tmax_grid_set API로 Value에 접근하는 것은 허용하지 않는다. 그러나 Key 이름에 대해서는 가능하다.

  • 프로토타입

    #include <usrinc/tmaxapi.h>
    int tmax_grid_dequeue2(char *key, int keylen, int *type, void *data, int *len, int flags)
  • 파라미터

    파라미터 설명

    key

    Key 이름이다. 127Byte를 넘을 수 없다.

    keylen

    Key의 길이이다.

    data

    함수 수행 후 Value를 반환한다. 타입에 따라 캐스팅 후 사용한다.

    len

    Node에서 가져올 데이터의 길이가 저장된다.

    flags

    동작 방식을 결정한다.

    • TG_GET_TYPE : 데이터의 type을 가져온다. 해당 Node의 데이터를 삭제하지 않는다.

  • 반환값

    반환값 설명

    >= 0

    함수 호출에 성공한 경우이다.

    < 0

    함수 호출에 실패한 경우이다. tgerrno에 에러 코드가 설정된다.

  • 오류

    tmax_grid_dequeue2()가 정상적으로 수행되지 않을 경우 tgerrno에 다음 값 중 하나가 설정된다.

    에러 코드 설명

    [TGEINVAL]

    Key가 NULL이거나 key_len <=0일 경우 또는 Key의 길이가 128Byte가 넘어갈 경우 또는 flags에 적절하지 않은 값이 지정된 경우이다.

    [TGEOS]

    Tmax 시스템에 에러가 발생한 경우로 자세한 정보는 로그 파일에 기록된다.

    [TGENOMEM]

    메모리가 부족하여 할당에 실패한 경우 발생한다.

    [TGEKEY]

    Key를 정상적으로 인식하지 못하는 경우이다.

    [TGENOKEY]

    해당하는 Key가 없는 경우이다.

    [TGENODATA]

    입력된 데이터가 존재하지 않을 경우이다.

    [TGECONF]

    TmaxGrid가 설정되지 않은 경우이다.

    [TGEENABLE ]

    TmaxGrid가 동작하지 않는 경우이다.

    [TGEOTYPE ]

    data tpalloc으로 할당하지 않았을 경우 또는 가져온 데이터가 올바르지 않은 SDL 또는 FDL 데이터일 경우이다.

1.17. tmax_grid_get_children

Key 이름으로 Child Key 이름의 리스트를 참조한다. Child Key의 정보를 담고 있는 TG_KEYLIST_T 핸들러를 리턴한다. 실패할 경우에는 NULL이 리턴된다.

  • 프로토타입

    #include <usrinc/tmaxapi.h>
    TG_KEYLIST_T  tmax_grid_get_children(char *key, int keylen, int *child_count)
  • 파라미터

    파라미터 설명

    key

    Key 이름이다. 127Byte를 넘을 수 없다.

    keylen

    Key의 길이이다.

    child_count

    동작 방식을 결정한다.

  • 반환값

    반환값 설명

    NULL이 아닌 경우

    TG_KEYLIST_T로 Key 이름 리스트의 시작 포인터를 반환한다. 더 이상 사용하지 않는다면 free를 반드시 수행해야 한다.

    NULL인 경우

    함수 호출에 실패한 경우이다. tgerrno에 에러 코드가 설정된다.

  • 오류

    tmax_grid_get_children()가 정상적으로 수행되지 않을 경우 tgerrno에 다음 값 중 하나가 설정된다.

    에러 코드 설명

    [TGEINVAL]

    Key가 NULL이거나 key_len <=0일 경우 또는 Key의 길이가 128Byte가 넘어갈 경우 또는 flags에 적절하지 않은 값이 지정된 경우이다.

    [TGEOS]

    Tmax 시스템에 에러가 발생한 경우로 자세한 정보는 로그 파일에 기록된다.

    [TGENOMEM]

    메모리가 부족하여 할당에 실패한 경우 발생한다.

    [TGEKEY]

    Key를 정상적으로 인식하지 못하는 경우이다.

    [TGECONF]

    TmaxGrid가 설정되지 않은 경우이다.

    [TGEENABLE ]

    TmaxGrid가 동작하지 않는 경우이다.

    [TGENOKEY ]

    해당하는 Key가 없는 경우이다.

1.18. tmax_grid_get_child_with_index

Child Key의 정보를 담고 있는 TG_KEYLIST_T 핸들러에서 nth번째의 key에 대한 정보를 TG_KEYINFO_T 구조체에 저장한다.

  • 프로토타입

    #include <usrinc/tmaxapi.h>
    int  tmax_grid_get_child_with_index(TG_KEYLIST_T keylist, int nth,
                                       TG_KEYINFO_T * keyinfo)
  • 파라미터

    파라미터 설명

    keylist

    tmax_grid_get_children()을 호출하여 리턴받은 핸들러이다.

    nth

    참조할 Child Key의 번호이다.

    keyinfo

    Child Node의 정보를 저장할 구조체, 할당된 버퍼를 사용해야 한다.

  • 반환값

    반환값 설명

    >= 0

    함수 호출에 성공한 경우이다.

    < 0

    함수 호출에 실패한 경우이다. tgerrno에 에러 코드가 설정된다.

  • 오류

    tmax_grid_get_child_with_index()가 정상적으로 수행되지 않을 경우 tgerrno에 다음 값 중 하나가 설정된다.

    에러 코드 설명

    [TGEINVAL]

    keylist가 NULL이거나 nth < 0 또는 keyinfo가 NULL인 경우이다.

    [TGEOS]

    Tmax 시스템에 에러가 발생한 경우로 자세한 정보는 로그 파일에 기록된다.

    [TGENOMEM]

    메모리가 부족하여 할당에 실패한 경우 발생한다.

    [TGEITYPE]

    잘못된 TG_KEYLIST_T 핸들러 값이 입력된 경우이다.

    [TGELIMIT]

    nth가 Child Node의 개수보다 더 큰 경우이다.

1.19. tmax_grid_keylist_free

Child Key의 정보를 담고 있는 TG_KEYLIST_T 핸들러의 자원을 해제한다.

  • 프로토타입

    #include <usrinc/tmaxapi.h>
    int  tmax_grid_keylist_free(TG_KEYLIST_T keylist)
  • 파라미터

    파라미터 설명

    keylist

    tmax_grid_get_children()을 호출하여 리턴받은 핸들러이다.

  • 반환값

    반환값 설명

    >= 0

    함수 호출에 성공한 경우이다.

    < 0

    함수 호출에 실패한 경우이다. tgerrno에 에러 코드가 설정된다.

  • 오류

    tmax_grid_keylist_free()가 정상적으로 수행되지 않을 경우 tgerrno에 다음 값 중 하나가 설정된다.

    에러 코드 설명

    [TGEINVAL]

    keylist가 NULL인 경우이다.

    [TGEOS]

    Tmax 시스템에 에러가 발생한 경우로 자세한 정보는 로그 파일에 기록된다.

    [TGEITYPE]

    잘못된 TG_KEYLIST_T 핸들러 값이 입력된 경우이다.

1.20. tmax_grid_init_key_browser

key browsing을 위한 핸들러를 초기화 한다. 초기화 인자로 메모리를 할당한 tg_key_browser_t 구조체 포인터와 키, 키의 길이를 사용한다. 이후 tmax_grid_get_next 를 호출하여 browsing 한다.

  • 프로토타입

    #include <usrinc/tmaxapi.h>
    int tmax_grid_init_key_browser(tg_key_browser_t *browser, char *key, int keylen)
  • 파라미터

    파라미터 설명

    browser

    browsing 을 위한 구조체 이다. 메모리를 직접 할당해 사용한다. 사용 후 해제하여 준다.

    key

    browsing 을 시작할 key

    keylen

    key의 길이

  • 반환값

    반환값 설명

    >= 0

    함수 호출에 성공한 경우이다.

    < 0

    함수 호출에 실패한 경우이다. tgerrno에 에러 코드가 설정된다.

  • 오류

    tmax_grid_init_key_browser()가 정상적으로 수행되지 않을 경우 tgerrno에 다음 값 중 하나가 설정된다.

    에러 코드 설명

    [TGEINVAL]

    browser가 메모리 할당이 되지 않았거나, key가 없거나 key 길이가 0이하일 경우 발생한다.

    [TGENOKEY]

    해당하는 key가 TmaxGrid에 없는 경우 발생한다.

    [TGENOMEM]

    메모리가 부족하여 할당에 실패한 경우 발생한다.

    [TGEOS]

    Tmax 시스템에 에러가 발생한 경우로 자세한 정보는 로그 파일에 기록된다.

1.21. tmax_grid_get_next

browsing을 통해 다음 key와 그 길이를 가져 온다. 함수 호출에 성공하면, tg_key_browser_t 의 next_key에 다음 key가 next_key_len에 그 길이를 반환한다. 더이상 다음 키가 없을 경우 next_key는 공백을 next_key_len = 0을 반환한다.

  • 프로토타입

    #include <usrinc/tmaxapi.h>
    int tmax_grid_get_next(tg_key_browser_t *browser, int flags)
  • 파라미터

    파라미터 설명

    browser

    tmax_grid_init_key_browser를 통해 초기화한 browsing 구조체 이다.

    flags

    사용하지 않는다.

  • 반환값

    반환값 설명

    >= 0

    함수 호출에 성공한 경우이다.

    < 0

    함수 호출에 실패한 경우이다. tgerrno에 에러 코드가 설정된다.

  • 오류

    tmax_grid_get_next()가 정상적으로 수행되지 않을 경우 tgerrno에 다음 값 중 하나가 설정된다.

    에러 코드 설명

    [TGEINVAL]

    browser가 메모리 할당이 되지 않았거나, 시작 key가 없을 경우 발생한다.

    [TGENOMEM]

    메모리가 부족하여 할당에 실패한 경우 발생한다.

    [TGEOS]

    Tmax 시스템에 에러가 발생한 경우로 자세한 정보는 로그 파일에 기록된다.

1.22. tmax_grid_init_bulk_handle

여러개의 key/value 쌍을 한꺼번에 get/set 하기 위한 핸들러를 초기화 한다. 초기화 인자로 메모리를 할당한 tg_bulk_handler_t 구조체 포인터를 사용한다.

  • 프로토타입

    #include <usrinc/tmaxapi.h>
    int tmax_grid_init_bulk_handle(tg_bulk_handler_t *lptr)
  • 파라미터

    파라미터 설명

    lptr

    bulk get/set 을 위한 구조체 이다. 메모리를 직접 할당해 사용한다.

  • 반환값

    반환값 설명

    >= 0

    함수 호출에 성공한 경우이다.

    < 0

    함수 호출에 실패한 경우이다. tgerrno에 에러 코드가 설정된다.

  • 오류

    tmax_grid_init_bulk_handle()가 정상적으로 수행되지 않을 경우 tgerrno에 다음 값 중 하나가 설정된다.

    에러 코드 설명

    [TGEINVAL]

    lptr이 메모리 할당이 되지 않았을 때 발생한다.

1.23. tmax_grid_set_bulk_handle

bulk get/set을 위해 key나 key/value를 설정한다.

  • 프로토타입

    #include <usrinc/tmaxapi.h>
    int tmax_grid_set_bulk_handle(tg_bulk_handler_t *lptr, char *key, int keylen, int type, int subtype, void *data, int len)
  • 파라미터

    파라미터 설명

    lptr

    tmax_grid_set_bulk_handle 에서 초기화한 구조체이다.

    key

    Key 이름이다. 127Byte를 넘을 수 없다.

    keylen

    Key의 길이이다.

    type

    해당하는 Key의 value type이다.

    tpalloc한 데이터의 경우 0을 입력하고 원시 타입의 경우 다음을 입력한다. 원시 타입을 사용 할 때는 tpalloc하지 않는다.

    • TMAX_GRID_INT

    • TMAX_GRID_FLOAT

    • TMAX_GRID_LONG

    • TMAX_GRID_SHORT

    • TMAX_GRID_DOUBLE

    • TMAX_GRID_STRING

    subtype

    data

    입력할 Value 이다. tpalloc으로 할당한 포인터나 실제 원시 데이터이다.

    len

    data의 길이이다.

  • 반환값

    반환값 설명

    >= 0

    함수 호출에 성공한 경우이다.

    < 0

    함수 호출에 실패한 경우이다. tgerrno에 에러 코드가 설정된다.

  • 오류

    tmax_grid_set_bulk_handle()가 정상적으로 수행되지 않을 경우 tgerrno에 다음 값 중 하나가 설정된다.

    에러 코드 설명

    [TGEINVAL]

    Key가 NULL이거나 key_len <=0일 경우 또는 Key의 길이가 128Byte가 넘어갈 경우 또는 flags에 적절하지 않은 값이 지정된 경우이다.

    [TGEOS]

    Tmax 시스템에 에러가 발생한 경우로 자세한 정보는 로그 파일에 기록된다.

    [TGENOMEM]

    메모리가 부족하여 할당에 실패한 경우 발생한다.

    [TGEKEY]

    Key를 정상적으로 인식하지 못하는 경우이다.

    [TGEPROTO]

    TG_QUEUE 또는 TG_LOCK 타입 Node의 Child Node에 데이터를 입력하려는 경우이다.

    [TGESHMFULL]

    TmaxGrid의 공유 메모리의 공간 부족할 경우 또는 환경설정 TGMAX 최대값까지 Key가 생성되어서 더 이상 Key를 생성할 수 없는 경우이다.

    [TGEITYPE]

    data가 잘못된 SDL이나 FDL일 경우이다.

    [TGECONF]

    TmaxGrid가 설정되지 않은 경우이다.

    [TGEENABLE ]

    TmaxGrid가 동작하지 않는 경우이다.

1.24. tmax_grid_destroy_bulk_handle

여러 개의 key/value 쌍을 한꺼번에 get/set 하기 위한 핸들러 자원을 반환한다.

  • 프로토타입

    #include <usrinc/tmaxapi.h>
    void tmax_grid_destroy_bulk_handle(tg_bulk_handler_t *lptr)
  • 파라미터

    파라미터 설명

    lptr

    bulk get/set에 사용한 구조체이다.

  • 반환값

    없음.

  • 오류

    없음.

1.25. tmax_grid_bulk_set

tg_bulk_handler_t에 등록된 key/value를 한번에 생성한다. 해당하는 Key에 Value가 존재한다면 기존의 Value는 삭제되고 새로운 Value로 갱신된다. Key에 watcher가 등록되어 있을 경우 기존의 Value가 삭제될 때는 이벤트가 발생하지 않는다. TG_EVENT_SET_SELF 이벤트가 등록되어 있으면 이벤트를 통지한다.

  • 프로토타입

    #include <usrinc/tmaxapi.h>
    int tmax_grid_bulk_set(tg_bulk_handler_t *lptr, int flags)
  • 파라미터

    파라미터 설명

    lptr

    key / value 쌍이 한 개 이상 등록된 핸들러이다.

    flags

    사용하지 않는다.

  • 반환값

    반환값 설명

    >= 0

    함수 호출에 성공한 경우이다.

    < 0

    함수 호출에 실패한 경우이다. tgerrno에 에러 코드가 설정된다.

  • 오류

    tmax_grid_bulk_set()가 정상적으로 수행되지 않을 경우 tgerrno에 다음 값 중 하나가 설정된다.

    에러 코드 설명

    [TGEINVAL]

    Key가 NULL이거나 key_len <=0일 경우 또는 Key의 길이가 128Byte가 넘어갈 경우 또는 flags에 적절하지 않은 값이 지정된 경우이다.

    [TGEOS]

    Tmax 시스템에 에러가 발생한 경우로 자세한 정보는 로그 파일에 기록된다.

    [TGENOMEM]

    메모리가 부족하여 할당에 실패한 경우 발생한다.

    [TGEKEY]

    Key를 정상적으로 인식하지 못하는 경우이다.

    [TGEPROTO]

    TG_QUEUE 또는 TG_LOCK 타입 Node의 Child Node에 데이터를 입력하려는 경우이다.

    [TGESHMFULL]

    TmaxGrid의 공유 메모리의 공간 부족할 경우 또는 환경설정 TGMAX 최댓값까지 Key가 생성되어서 더 이상 Key를 생성할 수 없는 경우이다.

    [TGEITYPE]

    data가 잘못된 SDL이나 FDL일 경우이다.

    [TGECONF]

    TmaxGrid가 설정되지 않은 경우이다.

    [TGEENABLE ]

    TmaxGrid가 동작하지 않는 경우이다.

1.26. tmax_grid_bulk_get

tg_bulk_handler_t에 등록된 key의 value를 가져오고 해당 key의 value는 삭제한다. value를 삭제하지 않고 가져오기 위해서는 flags를 지정해야 한다. 참고로 Key를 삭제하려면 tmax_grid_destroy 함수를 호출해야 한다.

TG_QUEUE 또는 TG_LOCK 타입의 Child Key의 경우에는 value를 가져올 수 없다.

  • 프로토타입

    #include <usrinc/tmaxapi.h>
    int tmax_grid_bulk_get(tg_bulk_handler_t *lptr, int flags)
  • 파라미터

    파라미터 설명

    lptr

    key가 한 개 이상 등록된 핸들러이다.

    flags

    동작 방식을 결정한다.

    • TG_GET_PEEK : 데이터를 가져오고 해당 Node의 데이터를 삭제하지 않는다.

  • 반환값

    반환값 설명

    >= 0

    함수 호출에 성공한 경우이다.

    < 0

    함수 호출에 실패한 경우이다. tgerrno에 에러 코드가 설정된다.

  • 오류

    tmax_grid_bulk_get()가 정상적으로 수행되지 않을 경우 tgerrno에 다음 값 중 하나가 설정된다.

    에러 코드 설명

    [TGEINVAL]

    Key가 NULL이거나 key_len <=0일 경우 또는 Key의 길이가 128Byte가 넘어갈 경우 또는 flags에 적절하지 않은 값이 지정된 경우이다.

    [TGEOS]

    Tmax 시스템에 에러가 발생한 경우로 자세한 정보는 로그 파일에 기록된다.

    [TGENOMEM]

    메모리가 부족하여 할당에 실패한 경우 발생한다.

    [TGEKEY]

    Key를 정상적으로 인식하지 못하는 경우이다.

    [TGECONF]

    TmaxGrid가 설정되지 않은 경우이다.

    [TGEENABLE ]

    TmaxGrid가 동작하지 않는 경우이다.

    [TGEOTYPE]

    data tpalloc으로 할당하지 않았을 경우 또는 가져온 데이터가 올바르지 않은 SDL이나 FDL 타입일 경우이다.

2. Java Client/Server API

다음은 Java Client/Server API에 대한 설명이다.

API 설명

gq2Create

Key를 생성한다.

gq2Destroy

Key를 삭제한다.

gq2Set

Key의 Value를 설정한다.

gq2Get

value를 가져오고 해당 Key의 Value는 삭제한다.

gq2IsExist

Key가 존재하는 검사한다.

gq2Count

전체 Key 개수를 참조한다.

gq2Lock

Key 이름으로 lock을 설정한다.

gq2Unlock

Key 이름으로 lock을 해제한다.

gq2SetWatcher

해당 Key의 이벤트를 발생할 때 호출하는 함수를 등록한다.

gq2Enqueue

Key 이름으로 Value를 입력한다.

gq2Dequeue

GQ2Enqueue에 의해서 입력한 Value 중 가장 처음에 입력한 Value를 참조한다.

gq2GetChildren

Key 이름으로 자식 Key 이름의 리스트를 참조한다.

2.1. gq2Create

Key를 생성한다.

  • 프로토타입

    public void gq2Create(String key, WebtGQ2Attribute attr, WebtGQ2Handler handler)
    throws WebtException
  • 파라미터

    파라미터 설명

    key

    생성할 Key 이름이다. 127Byte를 넘을 수 없다.

    attr

    C API(tmax_grid_create)와 동일하다.

    handler

    Key의 이벤트가 발생할 때 호출하는 인터페이스이다.

  • 오류

    문제가 발생할 때 WebtException을 throw한다.

2.2. gq2Destroy

Key를 삭제한다. Key의 이름으로 Key와 Value를 함께 삭제한다. attr를 설정하면 Child Key까지 함께 삭제할 수 있다.

  • 프로토타입

    public void gq2Destroy(String key, WebtGQ2Attribute attr)
    throws WebtException
  • 파라미터

    파라미터 설명

    key

    생성할 Key 이름이다. 127Byte를 넘을 수 없다.

    attr

    C API(tmax_grid_destroy)와 동일하다.

  • 오류

    문제가 발생할 때 WebtException을 throw한다.

2.3. gq2Set

Key를 생성한다.

  • 프로토타입

    public void gq2Set(String key, WebtBuffer data, WebtGQ2Attribute attr)
    throws WebtException
  • 파라미터

    파라미터 설명

    key

    Key 이름이다. 127Byte를 넘을 수 없다.

    data

    Key에 입력할 Value이다.

    attr

    C API(tmax_grid_set)와 동일하다.

  • 오류

    문제가 발생할 때 WebtException을 throw한다.

2.4. gq2Get

Key의 Value를 참조한다. 이 함수를 실행할 때 해당 Key의 Value는 삭제한다.

  • 프로토타입

    public WebtBuffer gq2Get(String key, WebtGQ2Attribute attr)
    throws WebtException
  • 파라미터

    파라미터 설명

    key

    참조할 Key 이름이다. 127Byte를 넘을 수 없다.

    attr

    C API(tmax_grid_get)와 동일하다.

  • 오류

    문제가 발생할 때 WebtException을 throw한다.

2.5. gq2IsExist

Key가 존재하는 검사한다. attr에 따라서 Key, Value, Child Key, Child Key의 Value까지 존재하는지 검사할 수 있다.

  • 프로토타입

    public int gq2IsExist(String key, WebtGQ2Attribute attr)
    throws WebtException
  • 파라미터

    파라미터 설명

    key

    생성할 Key 이름이다. 127Byte를 넘을 수 없다.

    attr

    C API(tmax_grid_is_exist)와 동일하다.

  • 오류

    문제가 발생할 때 WebtException을 throw한다.

2.6. gq2Count

전체 Key 개수를 참조한다. 리턴값이 GQS에서 저장하고 있는 Key 개수이다.

  • 프로토타입

    public int gq2Count()
    throws WebtException
  • 오류

    문제가 발생할 때 WebtException을 throw한다.

2.7. gq2Lock

Key 이름으로 Lock을 수행한다. 자신의 차례가 돌아올 때까지 기다린다.

  • 프로토타입

    public void gq2Lock(String key, int timeout, WebtGQ2Attribute attr)
    throws WebtException
  • 파라미터

    파라미터 설명

    key

    Key 이름이다. 127Byte를 넘을 수 없다.

    timeout

    Lock을 획득할 수 있는 기다리는 시간이다. (단위 : 초)

    attr

    C API(tmax_grid_lock)와 동일하다.

  • 오류

    문제가 발생할 때 WebtException을 throw한다.

2.8. gq2Unlock

Key 이름으로 lock을 해제한다. 다음 차례가 lock을 수행할 수 있다.

  • 프로토타입

    public void gq2Unlock(String key, WebtGQ2Attribute attr)
    throws WebtException
  • 파라미터

    파라미터 설명

    key

    Key 이름이다. 127Byte를 넘을 수 없다.

    attr

    C API(tmax_grid_unlock)와 동일하다.

  • 오류

    문제가 발생할 때 WebtException을 throw한다.

2.9. gq2SetWatcher

해당 Key의 이벤트를 발생할 때 호출하는 함수를 등록한다.

  • 프로토타입

    public void gq2SetWatcher(String key, WebtGQ2Attribute attr, WebtGQ2Handler handler)
    throws WebtException
  • 파라미터

    파라미터 설명

    key

    생성할 Key 이름이다. 127Byte를 넘을 수 없다.

    attr

    C API(tmax_grid_set_watcher)와 동일하다.

    handler

    Key의 이벤트가 발생할 때 호출하는 인터페이스이다.

  • 오류

    문제 발생시 WebtException 을 throw한다.

2.10. gq2Enqueue

Key 이름으로 Value를 입력한다. 해당하는 Key의 Child Key의 마지막 번호로 Value가 추가되어 gq2Dequeue에서 참조할 수 있게 한다.

  • 프로토타입

    public void gq2Enqueue(String key, WebtBuffer data, WebtGQ2Attribute attr)
    throws WebtException
  • 파라미터

    파라미터 설명

    key

    생성할 Key 이름이다. 127Byte를 넘을 수 없다.

    data

    입력할 Value이다.

    attr

    C API(tmax_grid_enqueue)와 동일하다.

  • 오류

    문제가 발생할 때 WebtException을 throw한다.

2.11. gq2Dequeue

gq2Enqueue에 의해서 입력한 Value 중 가장 처음에 입력한 Value를 참조한다. 참조한 Value는 GQS에서 삭제하여 더 이상 다른 클라이언트가 참조할 수 없다.

  • 프로토타입

    public WebtBuffer gq2Dequeue(String key, WebtGQ2Attribute attr)
    throws WebtException
  • 파라미터

    파라미터 설명

    key

    생성할 Key 이름이다. 127Byte를 넘을 수 없다.

    attr

    C API(tmax_grid_dequeue )와 동일하다.

  • 오류

    문제가 발생할 때 WebtException을 throw한다.

2.12. gq2GetChildren

Key 이름으로 Child Key 이름의 리스트를 참조한다. 1차 아래의 자식들만 참조할 수 있다.

리턴된 배열을 통해서 각 Key의 정보를 탐색할 수 있다.

  • 프로토타입

    public GQ2KeyList[] gq2GetChildren(String key, WebtGQ2Attribute attr)
    throws WebtException
  • 파라미터

    파라미터 설명

    key

    생성할 Key 이름이다. 127Byte를 넘을 수 없다.

    attr

    C API(tmax_grid_get_children)와 동일하다.하다.

  • 오류

    문제가 발생할 때 WebtException을 throw한다.