C++
Primeiro, siga as instruções para compilar e instalar o LiteSync a partir do código fonte ou use os binários pré-compilados para sua plataforma. Você pode começar com a versão gratuita.
Código de exemplo
#include <sqlite_modern_cpp.h>
#include <thread>
#include <chrono>
#include <iostream>
using namespace sqlite;
int main() {
try {
// abrir o banco de dados
database db("file:app.db?node=secondary&connect=tcp://server:port");
// aguardar até que o banco de dados esteja pronto
while(1) {
string status;
db << "pragma sync_status" >> status;
std::cout << "status : " << status << std::endl;
if (status.find("\"db_is_ready\": true") != string::npos) break;
std::this_thread::sleep_for(std::chrono::seconds(1));
}
// agora podemos usar a conexão com o banco de dados
...
}
catch (std::exception& e) {
std::cerr << e.what() << std::endl;
}
}
Notificação de Atualização
Seu aplicativo pode ser notificado quando o banco de dados local é atualizado devido à sincronização com nós remotos. A notificação é feita através de uma função definida pelo usuário.
db.define("update_notification", [](std::string changes) {
std::cout << "atualização recebida: " << changes << std::endl;
});
Notificação de Transação
Seu aplicativo pode ser notificado quando transações locais são sincronizadas com nós remotos. A notificação é feita através de uma função definida pelo usuário. Se o valor no argumento `result` não for "OK", então ele contém a mensagem de erro.
db.define("transaction_notification", [](std::string sql, std::string result) {
std::cout << "Transação sincronizada (" << result << "): " << sql << std::endl;
});
Status de Sincronização
Seu aplicativo pode verificar o status de sincronização do banco de dados local com os nós remotos.
std::string status;
db << "pragma sync_status" >> status;
std::cout << "status de sincronização: " << status << std::endl;
ATENÇÃO: As funções de notificação são chamadas pela thread de trabalho. O aplicativo NÃO deve usar a conexão com o banco de dados dentro das funções de notificação e deve retornar o mais rápido possível! O aplicativo pode transferir a notificação para a thread principal antes de retornar.
Compilação
g++ -o app app.cpp -std=c++14 -llitesync