Add connected property to Client
This commit is contained in:
parent
5912302043
commit
487427cf0a
@ -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 {
|
||||
|
@ -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);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user