aboutsummaryrefslogtreecommitdiff
path: root/xmpp-vala/src/module/xep/0047_in_band_bytestreams.vala
diff options
context:
space:
mode:
authorhrxi <hrrrxi@gmail.com>2019-08-05 17:05:33 +0200
committerhrxi <hrrrxi@gmail.com>2019-08-05 17:17:17 +0200
commit95596e25a5cdacc7634dd2b9ca0e98599ae7d1b1 (patch)
tree67ad579a38cd462d5e27c1016df8518c8dad42bd /xmpp-vala/src/module/xep/0047_in_band_bytestreams.vala
parent08a5088c16ae0bd69adc42ac6489adde3a9ad13f (diff)
downloaddino-95596e25a5cdacc7634dd2b9ca0e98599ae7d1b1.tar.gz
dino-95596e25a5cdacc7634dd2b9ca0e98599ae7d1b1.zip
Add jingle connection for better interfacing with jingle (terminate etc.)
Diffstat (limited to 'xmpp-vala/src/module/xep/0047_in_band_bytestreams.vala')
-rw-r--r--xmpp-vala/src/module/xep/0047_in_band_bytestreams.vala25
1 files changed, 5 insertions, 20 deletions
diff --git a/xmpp-vala/src/module/xep/0047_in_band_bytestreams.vala b/xmpp-vala/src/module/xep/0047_in_band_bytestreams.vala
index 2650a194..9af9f30e 100644
--- a/xmpp-vala/src/module/xep/0047_in_band_bytestreams.vala
+++ b/xmpp-vala/src/module/xep/0047_in_band_bytestreams.vala
@@ -60,9 +60,8 @@ public class Module : XmppStreamModule, Iq.Handler {
}
public class Connection : IOStream {
- // TODO(hrxi): Fix reference cycle
public class Input : InputStream {
- private Connection connection;
+ private weak Connection connection;
public Input(Connection connection) {
this.connection = connection;
}
@@ -73,14 +72,14 @@ public class Connection : IOStream {
return yield connection.read_async(buffer, io_priority, cancellable);
}
public override bool close(Cancellable? cancellable = null) throws IOError {
- return connection.close_read(cancellable);
+ throw new IOError.NOT_SUPPORTED("can't do non-async closes on in-band bytestreams");
}
public override async bool close_async(int io_priority = GLib.Priority.DEFAULT, Cancellable? cancellable = null) throws IOError {
return yield connection.close_read_async(io_priority, cancellable);
}
}
public class Output : OutputStream {
- private Connection connection;
+ private weak Connection connection;
public Output(Connection connection) {
this.connection = connection;
}
@@ -91,7 +90,7 @@ public class Connection : IOStream {
return yield connection.write_async(buffer, io_priority, cancellable);
}
public override bool close(Cancellable? cancellable = null) throws IOError {
- return connection.close_write(cancellable);
+ throw new IOError.NOT_SUPPORTED("can't do non-async closes on in-band bytestreams");
}
public override async bool close_async(int io_priority = GLib.Priority.DEFAULT, Cancellable? cancellable = null) throws IOError {
return yield connection.close_write_async(io_priority, cancellable);
@@ -263,13 +262,6 @@ public class Connection : IOStream {
return buffer.length;
}
- public bool close_read(Cancellable? cancellable = null) {
- input_closed = true;
- if (!output_closed) {
- return true;
- }
- return close_impl(cancellable);
- }
public async bool close_read_async(int io_priority = GLib.Priority.DEFAULT, Cancellable? cancellable = null) throws IOError {
input_closed = true;
if (!output_closed) {
@@ -277,13 +269,6 @@ public class Connection : IOStream {
}
return yield close_async_impl(io_priority, cancellable);
}
- public bool close_write(Cancellable? cancellable = null) {
- output_closed = true;
- if (!input_closed) {
- return true;
- }
- return close_impl(cancellable);
- }
public async bool close_write_async(int io_priority = GLib.Priority.DEFAULT, Cancellable? cancellable = null) throws IOError {
output_closed = true;
if (!input_closed) {
@@ -292,7 +277,7 @@ public class Connection : IOStream {
return yield close_async_impl(io_priority, cancellable);
}
delegate void OnClose(bool success);
- private bool close_impl(Cancellable? cancellable = null, OnClose? on_close = null) {
+ private bool close_impl(Cancellable? cancellable, OnClose on_close) {
if (state == State.DISCONNECTING || state == State.DISCONNECTED || state == State.ERROR) {
on_close(true);
return true;