C++
먼저 소스 코드에서 LiteSync를 컴파일하고 설치하거나 사용 중인 플랫폼에 맞는 미리 컴파일된 바이너리를 사용하세요. 무료 버전으로 시작할 수 있습니다.
예제 코드
#include <sqlite_modern_cpp.h>
#include <thread>
#include <chrono>
#include <iostream>
using namespace sqlite;
int main() {
try {
// 데이터베이스 열기
database db("file:app.db?node=secondary&connect=tcp://server:port");
// 데이터베이스가 준비될 때까지 대기
while(1) {
string status;
db << "pragma sync_status" >> status;
std::cout << "상태 : " << status << std::endl;
if (status.find("\"db_is_ready\": true") != string::npos) break;
std::this_thread::sleep_for(std::chrono::seconds(1));
}
// 이제 db 연결을 사용할 수 있습니다
...
}
catch (std::exception& e) {
std::cerr << e.what() << std::endl;
}
}
업데이트 알림
원격 노드와의 동기화로 인해 로컬 데이터베이스가 업데이트될 때 애플리케이션에 알림을 받을 수 있습니다. 알림은 사용자 정의 함수를 통해 이루어집니다.
db.define("update_notification", [](std::string changes) {
std::cout << "업데이트 수신: " << changes << std::endl;
});
트랜잭션 알림
로컬 트랜잭션이 원격 노드와 동기화될 때 애플리케이션에 알림을 받을 수 있습니다. 알림은 사용자 정의 함수를 통해 이루어집니다. `result` 인자의 값이 "OK"가 아닌 경우 오류 메시지를 포함합니다.
db.define("transaction_notification", [](std::string sql, std::string result) {
std::cout << "트랜잭션 동기화됨 (" << result << "): " << sql << std::endl;
});
동기화 상태
애플리케이션에서 로컬 데이터베이스와 원격 노드 간의 동기화 상태를 확인할 수 있습니다.
std::string status;
db << "pragma sync_status" >> status;
std::cout << "동기화 상태: " << status << std::endl;
주의: 알림 함수는 작업자 스레드에 의해 호출됩니다. 애플리케이션은 알림 함수 내에서 db 연결을 사용해서는 안 되며 가능한 한 빨리 반환해야 합니다! 애플리케이션은 반환하기 전에 알림을 메인 스레드로 전달할 수 있습니다.
빌드
g++ -o app app.cpp -std=c++14 -llitesync