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) 정의
|
||||||||||||||||||||||||||
|
Links