SyncLibrary 

  Sync Library 정적 라이브러리(static library) 형태로 구현되었고, SyncML 서버 개발자는 링크(link)하여 쉽게 라이브러리의 API 이용할 있다. Sync Library SyncML 서버에서 사용하는 SyncML Toolkit 공용으로 사용한다. 정적 라이브러리 형태로 구현되었기 때문에 라이브러리파일(SyncLib.lib)을 링크하고 관련 헤더파일을 include 하여 쉽게 사용할 수 있다.

공통 정의 파일 (관련 파일명 : sLibDefine.h)

SyncLibrary는 sLibDefine 이라는 헤더를 사용하여 응용서비스에 공통적으로 이용되는 구조체와 함수를 정의하고 있다.

l 지원하는 응용 서비스 타입 정의

typedef enum {

SLIB_UNKNOWN = -1,                           // 지원하지 않는 응용 서비스 타입

SLIB_VCARD = 0,                                  // vCard 포맷의 응용 서비스 코드

SLIB_VCALENDAR = 1                           // vCalendar 포맷의 응용 서비스 코드

} slibServiceType_t;

새로운 응용서비스를 추가하고자 한다면 이곳에 적절한 이름으로 추가해준다.

 

l응용 서비스별 ODBI API 등록을 위한 구조체 정의

typedef struct slib_odbi_service_callbacks_s {

slibFind   findFunc;                                   // 엔트리 검색을 위한 함수포인터

slibGetAll   getAllFunc;                              // 모든 정보를 얻기 위한 함수포인터

slibAdd   addFunc;                                   // 추가를 위한 함수포인터

slibReplace   replaceFunc;                      // 수정을 위한 함수포인터

slibDelete  deleteFunc;                             // 삭제를 위한 함수포인터

} *slibODBICallbacksPtr_t, slibODBICallbacks_t;

SEG를 통하여 생성된 ODBI 함수들을 본 구조체를 사용하여 매핑시켜 준다. SyncLibrary 내에서 이 구조체의 함수 포인터로 적절한 ODBI 함수를 호출하게 된다.

 

l 응용 서비스에 공통적으로 필요한 ODBI API 등록을 위한 구조체 정의

typedef struct slib_odbi_common_callbacks_s {

slibGetNewId           getNewIdFunc;             // 새로운 GUID 얻는 함수 포인터

slibCLFind               clFindFunc;                  // 변경 정보 검색을 위한 함수 포인터

slibCLAdd                clAddFunc;                  // 변경 정보 추가를위한 함수 포인터

slibCLUpdate           clUpdateFunc;             // 변경 정보 수정을 위한 함수 포인터

slibCLDelete            clDeleteFunc;               // 변경 정보 삭제를 위한 함수 포인터

slibCLGetAll             clGetAllFunc;                // 변경된 엔트리를 모두 얻는 함수 포인터

slibCLGetAll4DB       clGetAll4DBFunc;         // 응용 서비스별로 변경된 엔트리를 모두 얻는 함수 포인터

slibCLGetChanged   clGetChangedFunc;    // 수정된 엔트리를 얻는 함수 포인터

slibCLDeleteAll         clDeleteAllFunc;          // 삭제된 엔트리를 모두 얻는 함수 포인터

slibCLDeleteAll4DB   clDeleteAll4DBFunc;    // 응용 서비스별로 삭제된 엔트리를 모두 얻는 함수 포인터

slibCLFindOriginId clFindOriginIdFunc;        // 복사된 경우 원래의 GUID값을 얻는 함수 포인터

} *slibCallbacksPtr_t, slibCallbacks_t;

본 구조체는 응용 서비스에 공통적으로 필요한 ODBI API 에 대한 함수 포인터를 가지고 있다. 이 함수들은 SEG를 통하여 생성되지 않으며, 새로운 응용서비스를 구현하고자 하는 SyncML 서버에 이미 구현되어 있는 함수들이다. 각 API들에 대한 설명은 아래와 같다.

 

lODBI API 등록하기 위한 함수 원형(prototype) 선언

// 조건에 해당하는 데이터 아이템을 검색하기 위한 함수

typedef Ret_t (*slibFind) (HDBC hdbc, HENV henv, String_t UsrID, Long_t guidNum, DataObjectPtr_t pObject);

// 조건에 해당하는 데이터 아이템을 모두 얻어오기 위한 함수

typedef Ret_t (*slibGetAll) (HDBC hdbc, HENV henv, String_t UsrID, GuidNumListPtr_t *ppGuidNumList);

// 데이터 아이템을 추가하기 위한 함수

typedef Ret_t (*slibAdd) (HDBC hdbc, HENV henv, String_t UsrID, Long_t guidNum, DataObjectPtr_t pObject);

// 데이터 아이템을 수정하기 위한 함수

typedef Ret_t (*slibReplace) (HDBC hdbc, HENV henv, String_t UsrID, Long_t guidNum, DataObjectPtr_t pObject);

// 데이터 아이템을 삭제하기 위한 함수

typedef Ret_t (*slibDelete) (HDBC hdbc, HENV henv, String_t UsrID, Long_t guidNum);

// 추가하려는 데이터 아이템의 GUID 얻기 위한 함수

typedef Ret_t (*slibGetNewId) (HDBC hdbc, HENV henv, String_t UsrID, String_t dbID, Long_t *guidNum);

// Change Log 정보를 검색하기 위한 함수

typedef Ret_t (*slibCLFind)(HDBC hdbc, HENV henv, String_t UsrID, String_t dbId, Long_t guidNum, int deviceId, DbChgLogEntryPtr_t pCLEntry) ;

// Change Log 정보를 추가하기 위한 함수

typedef Ret_t (*slibCLAdd) (HDBC hdbc, HENV henv, String_t UsrID, DbChgLogEntryPtr_t pCLEntry);

// Change Log 정보를 변경하기 위한 함수

typedef Ret_t (*slibCLUpdate) (HDBC hdbc, HENV henv, String_t UsrID, DbChgLogEntryPtr_t pCLEntry );

// Change Log 정보를 삭제하기 위한 함수

typedef Ret_t (*slibCLDelete) (HDBC hdbc, HENV henv, String_t UsrID, String_t dbId, Long_t guidNum, int deviceId);

// Change Log 정보를 모두 얻기 위한 함수

typedef Ret_t (*slibCLGetAll)( HDBC hdbc, HENV henv, String_t UsrID, String_t dbId, int deviceId, DbChgLogEntryPtr_t *pCLEntry);

// Change Log 정보를 응용 서비스별로 모두 얻기 위한 함수

typedef Ret_t (*slibCLGetAll4DB) (HDBC hdbc, HENV henv, String_t UsrID, String_t dbId, DbChgLogEntryPtr_t *pCLEntry);

// Change Log 정보를 변경 타입별로 얻기 위한 함수

typedef Ret_t (*slibCLGetChanged) (HDBC hdbc, HENV henv, String_t UsrID, String_t dbId, int deviceId, String_t actionFlag, DbChgLogEntryPtr_t *pCLEntry);

// Change Log 정보를 모두 삭제하기 위한 함수

typedef Ret_t (*slibCLDeleteAll)(HDBC hdbc, HENV henv, String_t UsrID, String_t dbId, int deviceId);

// Change Log 정보를 응용 서비스별로 삭제하기 위한 함수

typedef Ret_t (*slibCLDeleteAll4DB) (HDBC hdbc, HENV henv, String_t UsrID, String_t dbID) ;

// Change Log에서 원래 GUID 복사된 정보를 검색하기 위한 함수

typedef Ret_t (*slibCLFindOriginId)(HDBC hdbc, HENV henv, String_t UsrID, String_t dbId, Long_t OriginGuidNum, DbChgLogEntryPtr_t *ppCLEntry) ;

 

l반환 코드(Return Code) 정의

반환 코드

SLIB_OK

7100

SLIB_ADDED

7101

SLIB_REPLACED

7102

SLIB_DELETED

7103

SLIB_NO_ENTRY

7104

SLIB_FAILED

7200

SLIB_NOT_ADDED

7201

SLIB_NOT_REPLACED

7202

SLIB_NOT_DELETED

7203

SLIB_UNSUPPORTED_MEDIA

7204

SLIB_DATA_EQ

7300

SLIB_DATA_NEQ

7301

 

    


주요 API

SyncLibrary Download

사용방법


 Links

Main

SDE 소개

SEG