mirror of
https://github.com/YGGverse/ggemini.git
synced 2026-03-31 17:15:31 +00:00
implement cancel action
This commit is contained in:
parent
6ee60e9d9d
commit
cdf35db0d6
2 changed files with 12 additions and 1 deletions
|
|
@ -2,7 +2,7 @@ pub mod error;
|
||||||
pub use error::Error;
|
pub use error::Error;
|
||||||
|
|
||||||
use gio::{
|
use gio::{
|
||||||
prelude::{IOStreamExt, TlsConnectionExt},
|
prelude::{CancellableExt, IOStreamExt, TlsConnectionExt},
|
||||||
Cancellable, IOStream, NetworkAddress, SocketConnection, TlsCertificate, TlsClientConnection,
|
Cancellable, IOStream, NetworkAddress, SocketConnection, TlsCertificate, TlsClientConnection,
|
||||||
};
|
};
|
||||||
use glib::object::{Cast, IsA};
|
use glib::object::{Cast, IsA};
|
||||||
|
|
@ -50,6 +50,15 @@ impl Connection {
|
||||||
|
|
||||||
// Actions
|
// Actions
|
||||||
|
|
||||||
|
/// Apply `cancel` action to `Self` [Cancellable](https://docs.gtk.org/gio/method.Cancellable.cancel.html)
|
||||||
|
/// * return `Error` on `Cancellable` not found
|
||||||
|
pub fn cancel(&self) -> Result<(), Error> {
|
||||||
|
match self.cancellable {
|
||||||
|
Some(ref cancellable) => Ok(cancellable.cancel()),
|
||||||
|
None => Err(Error::Cancel),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Close owned [SocketConnection](https://docs.gtk.org/gio/class.SocketConnection.html)
|
/// Close owned [SocketConnection](https://docs.gtk.org/gio/class.SocketConnection.html)
|
||||||
pub fn close(&self) -> Result<(), Error> {
|
pub fn close(&self) -> Result<(), Error> {
|
||||||
match self.socket_connection.close(self.cancellable.as_ref()) {
|
match self.socket_connection.close(self.cancellable.as_ref()) {
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ use std::fmt::{Display, Formatter, Result};
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub enum Error {
|
pub enum Error {
|
||||||
|
Cancel,
|
||||||
Closed,
|
Closed,
|
||||||
Rehandshake(glib::Error),
|
Rehandshake(glib::Error),
|
||||||
SocketConnection(glib::Error),
|
SocketConnection(glib::Error),
|
||||||
|
|
@ -11,6 +12,7 @@ pub enum Error {
|
||||||
impl Display for Error {
|
impl Display for Error {
|
||||||
fn fmt(&self, f: &mut Formatter) -> Result {
|
fn fmt(&self, f: &mut Formatter) -> Result {
|
||||||
match self {
|
match self {
|
||||||
|
Self::Cancel => write!(f, "Cancellable not found"),
|
||||||
Self::Closed => write!(f, "Connection closed"),
|
Self::Closed => write!(f, "Connection closed"),
|
||||||
Self::Rehandshake(e) => {
|
Self::Rehandshake(e) => {
|
||||||
write!(f, "Rehandshake error: {e}")
|
write!(f, "Rehandshake error: {e}")
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue