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