Add connected property to Client
This commit is contained in:
parent
5912302043
commit
487427cf0a
@ -7,6 +7,8 @@ namespace StudySystemClient {
|
|||||||
public class Client {
|
public class Client {
|
||||||
public signal void connection_status(bool connected);
|
public signal void connection_status(bool connected);
|
||||||
|
|
||||||
|
public bool connected { get { return connection.connected; } }
|
||||||
|
|
||||||
private Connection connection;
|
private Connection connection;
|
||||||
|
|
||||||
public Client(string cert_dir) throws Error {
|
public Client(string cert_dir) throws Error {
|
||||||
|
@ -2,6 +2,8 @@ namespace StudySystemClient {
|
|||||||
public class Connection {
|
public class Connection {
|
||||||
public delegate void StatusCallback(bool connected);
|
public delegate void StatusCallback(bool connected);
|
||||||
|
|
||||||
|
public bool connected { get; private set; }
|
||||||
|
|
||||||
private StatusCallback status_callback;
|
private StatusCallback status_callback;
|
||||||
private SessionManager session_manager;
|
private SessionManager session_manager;
|
||||||
private TransactionManager transaction_manager;
|
private TransactionManager transaction_manager;
|
||||||
@ -16,9 +18,10 @@ namespace StudySystemClient {
|
|||||||
this.status_callback = (owned) status_callback;
|
this.status_callback = (owned) status_callback;
|
||||||
session_manager = new SessionManager(
|
session_manager = new SessionManager(
|
||||||
session_factory, (msg) => receive(msg),
|
session_factory, (msg) => receive(msg),
|
||||||
(connected) => status_changed(connected));
|
(connected) => update_status(connected));
|
||||||
transaction_manager = new TransactionManager();
|
transaction_manager = new TransactionManager();
|
||||||
worker = new Worker(session_manager);
|
worker = new Worker(session_manager);
|
||||||
|
connected = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Response.Body? send(Request.Body body) {
|
public async Response.Body? send(Request.Body body) {
|
||||||
@ -43,9 +46,12 @@ namespace StudySystemClient {
|
|||||||
}, GLib.Priority.DEFAULT_IDLE);
|
}, GLib.Priority.DEFAULT_IDLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void status_changed(bool connected) {
|
private void update_status(bool connected) {
|
||||||
Idle.add(() => {
|
Idle.add(() => {
|
||||||
status_callback(connected);
|
if (connected != this.connected) {
|
||||||
|
this.connected = connected;
|
||||||
|
status_callback(connected);
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}, GLib.Priority.DEFAULT_IDLE);
|
}, GLib.Priority.DEFAULT_IDLE);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user