Add connected property to Client

This commit is contained in:
Camden Dixie O'Brien 2025-03-02 17:05:16 +00:00
parent 5912302043
commit 487427cf0a
2 changed files with 11 additions and 3 deletions

View File

@ -7,6 +7,8 @@ namespace StudySystemClient {
public class Client {
public signal void connection_status(bool connected);
public bool connected { get { return connection.connected; } }
private Connection connection;
public Client(string cert_dir) throws Error {

View File

@ -2,6 +2,8 @@ namespace StudySystemClient {
public class Connection {
public delegate void StatusCallback(bool connected);
public bool connected { get; private set; }
private StatusCallback status_callback;
private SessionManager session_manager;
private TransactionManager transaction_manager;
@ -16,9 +18,10 @@ namespace StudySystemClient {
this.status_callback = (owned) status_callback;
session_manager = new SessionManager(
session_factory, (msg) => receive(msg),
(connected) => status_changed(connected));
(connected) => update_status(connected));
transaction_manager = new TransactionManager();
worker = new Worker(session_manager);
connected = true;
}
public async Response.Body? send(Request.Body body) {
@ -43,9 +46,12 @@ namespace StudySystemClient {
}, GLib.Priority.DEFAULT_IDLE);
}
private void status_changed(bool connected) {
private void update_status(bool connected) {
Idle.add(() => {
status_callback(connected);
if (connected != this.connected) {
this.connected = connected;
status_callback(connected);
}
return false;
}, GLib.Priority.DEFAULT_IDLE);
}