C++
Suivez d'abord les instructions pour compiler et installer LiteSync à partir du code source ou utilisez les binaires précompilés pour votre plateforme. Vous pouvez commencer avec la version gratuite.
Code exemple
#include <sqlite_modern_cpp.h>
#include <thread>
#include <chrono>
#include <iostream>
using namespace sqlite;
int main() {
try {
// ouvrir la base de données
database db("file:app.db?node=secondary&connect=tcp://server:port");
// attendre que la base de données soit prête
while(1) {
string status;
db << "pragma sync_status" >> status;
std::cout << "statut : " << status << std::endl;
if (status.find("\"db_is_ready\": true") != string::npos) break;
std::this_thread::sleep_for(std::chrono::seconds(1));
}
// maintenant nous pouvons utiliser la connexion db
...
}
catch (std::exception& e) {
std::cerr << e.what() << std::endl;
}
}
Notification de mise à jour
Votre application peut être notifiée lorsque la base de données locale est mise à jour suite à une synchronisation avec des nœuds distants. La notification se fait via une fonction définie par l'utilisateur.
db.define("update_notification", [](std::string changes) {
std::cout << "mise à jour reçue : " << changes << std::endl;
});
Notification de transaction
Votre application peut être notifiée lorsque les transactions locales sont synchronisées avec des nœuds distants. La notification se fait via une fonction définie par l'utilisateur. Si la valeur dans l'argument `result` n'est pas "OK", elle contient le message d'erreur.
db.define("transaction_notification", [](std::string sql, std::string result) {
std::cout << "Transaction synchronisée (" << result << ") : " << sql << std::endl;
});
État de la synchronisation
Votre application peut vérifier l'état de synchronisation de la base de données locale avec les nœuds distants.
std::string status;
db << "pragma sync_status" >> status;
std::cout << "état de synchronisation : " << status << std::endl;
ATTENTION : Les fonctions de notification sont appelées par le thread worker. L'application ne doit PAS utiliser la connexion db à l'intérieur des fonctions de notification et doit retourner aussi vite que possible ! L'application peut transférer la notification au thread principal avant de retourner.
Compilation
g++ -o app app.cpp -std=c++14 -llitesync