C++

Folgen Sie zunächst den Anweisungen zum Kompilieren und Installieren von LiteSync aus dem Quellcode oder verwenden Sie die vorkompilierten Binärdateien für Ihre Plattform. Sie können mit der kostenlosen Version beginnen.


Beispielcode
#include <sqlite_modern_cpp.h>
#include <thread>
#include <chrono>
#include <iostream>

using namespace sqlite;

int main() {
  try {
    // Datenbank öffnen
    database db("file:app.db?node=secondary&connect=tcp://server:port");

    // Warten bis die Datenbank bereit ist
    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));
    }

    // Jetzt können wir die DB-Verbindung verwenden
    ...
  }
  catch (std::exception& e) {
    std::cerr << e.what() << std::endl;
  }
}


Update-Benachrichtigung

Ihre Anwendung kann benachrichtigt werden, wenn die lokale Datenbank aufgrund der Synchronisation mit entfernten Knoten aktualisiert wird. Die Benachrichtigung erfolgt über eine benutzerdefinierte Funktion.

db.define("update_notification", [](std::string changes) {
  std::cout << "Update empfangen: " << changes << std::endl;
});


Transaktions-Benachrichtigung

Ihre Anwendung kann benachrichtigt werden, wenn lokale Transaktionen mit entfernten Knoten synchronisiert werden. Die Benachrichtigung erfolgt über eine benutzerdefinierte Funktion. Wenn der Wert im `result`-Argument nicht "OK" ist, enthält er die Fehlermeldung.

db.define("transaction_notification", [](std::string sql, std::string result) {
  std::cout << "Transaktion synchronisiert (" << result << "): " << sql << std::endl;
});


Synchronisationsstatus

Ihre Anwendung kann den Synchronisationsstatus der lokalen Datenbank mit den entfernten Knoten überprüfen.

std::string status;
db << "pragma sync_status" >> status;
std::cout << "Synchronisationsstatus: " << status << std::endl;


ACHTUNG: Die Benachrichtigungsfunktionen werden vom Worker-Thread aufgerufen. Die Anwendung sollte die DB-Verbindung NICHT innerhalb der Benachrichtigungsfunktionen verwenden und muss so schnell wie möglich zurückkehren! Die Anwendung kann die Benachrichtigung vor der Rückkehr an den Hauptthread übertragen.




Build

g++ -o app app.cpp -std=c++14 -llitesync