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));
}
// теперь мы можем использовать соединение с БД
...
}
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;
ВНИМАНИЕ: Функции уведомления вызываются рабочим потоком. Приложение НЕ ДОЛЖНО использовать соединение с базой данных внутри функций уведомления, и оно должно возвращать управление как можно быстрее! Приложение может передать уведомление в основной поток перед возвратом.
Сборка
g++ -o app app.cpp -std=c++14 -llitesync