pub struct DtlsConnection { /* private fields */ }
Expand description
GDtlsConnection
is the base DTLS connection class type, which wraps
a DatagramBased
and provides DTLS encryption on top of it. Its
subclasses, DtlsClientConnection
and
DtlsServerConnection
, implement client-side and server-side DTLS,
respectively.
For TLS support, see TlsConnection
.
As DTLS is datagram based, GDtlsConnection
implements
DatagramBased
, presenting a datagram-socket-like API for the
encrypted connection. This operates over a base datagram connection, which is
also a GDatagramBased
(base-socket
).
To close a DTLS connection, use DtlsConnectionExt::close()
.
Neither DtlsServerConnection
or DtlsClientConnection
set the peer address on their base DatagramBased
if it is a
Socket
— it is up to the caller to do that if they wish. If they
do not, and SocketExt::close()
is called on the base socket, the
GDtlsConnection
will not raise a G_IO_ERROR_NOT_CONNECTED
error on
further I/O.
§Properties
§advertised-protocols
The list of application-layer protocols that the connection advertises that it is willing to speak. See g_dtls_connection_set_advertised_protocols().
Readable | Writeable
§base-socket
The #GDatagramBased that the connection wraps. Note that this may be any implementation of #GDatagramBased, not just a #GSocket.
Readable | Writeable | Construct Only
§certificate
The connection’s certificate; see g_dtls_connection_set_certificate().
Readable | Writeable
§ciphersuite-name
The name of the DTLS ciphersuite in use. See g_dtls_connection_get_ciphersuite_name().
Readable
§database
The certificate database to use when verifying this TLS connection. If no certificate database is set, then the default database will be used. See g_tls_backend_get_default_database().
When using a non-default database, #GDtlsConnection must fall back to using the #GTlsDatabase to perform certificate verification using g_tls_database_verify_chain(), which means certificate verification will not be able to make use of TLS session context. This may be less secure. For example, if you create your own #GTlsDatabase that just wraps the default #GTlsDatabase, you might expect that you have not changed anything, but this is not true because you may have altered the behavior of #GDtlsConnection by causing it to use g_tls_database_verify_chain(). See the documentation of g_tls_database_verify_chain() for more details on specific security checks that may not be performed. Accordingly, setting a non-default database is discouraged except for specialty applications with unusual security requirements.
Readable | Writeable
§interaction
A #GTlsInteraction object to be used when the connection or certificate database need to interact with the user. This will be used to prompt the user for passwords where necessary.
Readable | Writeable
§negotiated-protocol
The application-layer protocol negotiated during the TLS handshake. See g_dtls_connection_get_negotiated_protocol().
Readable
§peer-certificate
The connection’s peer’s certificate, after the TLS handshake has completed or failed. Note in particular that this is not yet set during the emission of #GDtlsConnection::accept-certificate.
(You can watch for a #GObject::notify signal on this property to detect when a handshake has occurred.)
Readable
§peer-certificate-errors
The errors noticed while verifying
#GDtlsConnection:peer-certificate. Normally this should be 0, but
it may not be if #GDtlsClientConnection:validation-flags is not
TlsCertificateFlags::VALIDATE_ALL
, or if
#GDtlsConnection::accept-certificate overrode the default
behavior.
GLib guarantees that if certificate verification fails, at least
one error will be set, but it does not guarantee that all possible
errors will be set. Accordingly, you may not safely decide to
ignore any particular type of error. For example, it would be
incorrect to mask TlsCertificateFlags::EXPIRED
if you want to allow
expired certificates, because this could potentially be the only
error flag set even if other problems exist with the certificate.
Readable
§protocol-version
The DTLS protocol version in use. See g_dtls_connection_get_protocol_version().
Readable
§rehandshake-mode
The rehandshaking mode. See g_dtls_connection_set_rehandshake_mode().
Readable | Writeable | Construct
§require-close-notify
Whether or not proper TLS close notification is required. See g_dtls_connection_set_require_close_notify().
Readable | Writeable | Construct
§Signals
§accept-certificate
Emitted during the TLS handshake after the peer certificate has been received. You can examine @peer_cert’s certification path by calling g_tls_certificate_get_issuer() on it.
For a client-side connection, @peer_cert is the server’s
certificate, and the signal will only be emitted if the
certificate was not acceptable according to @conn’s
#GDtlsClientConnection:validation_flags. If you would like the
certificate to be accepted despite @errors, return true
from the
signal handler. Otherwise, if no handler accepts the certificate,
the handshake will fail with TlsError::BadCertificate
.
GLib guarantees that if certificate verification fails, this signal
will be emitted with at least one error will be set in @errors, but
it does not guarantee that all possible errors will be set.
Accordingly, you may not safely decide to ignore any particular
type of error. For example, it would be incorrect to ignore
TlsCertificateFlags::EXPIRED
if you want to allow expired
certificates, because this could potentially be the only error flag
set even if other problems exist with the certificate.
For a server-side connection, @peer_cert is the certificate
presented by the client, if this was requested via the server’s
#GDtlsServerConnection:authentication_mode. On the server side,
the signal is always emitted when the client presents a
certificate, and the certificate will only be accepted if a
handler returns true
.
Note that if this signal is emitted as part of asynchronous I/O
in the main thread, then you should not attempt to interact with
the user before returning from the signal handler. If you want to
let the user decide whether or not to accept the certificate, you
would have to return false
from the signal handler on the first
attempt, and then after the connection attempt returns a
TlsError::BadCertificate
, you can interact with the user, and
if the user decides to accept the certificate, remember that fact,
create a new connection, and return true
from the signal handler
the next time.
If you are doing I/O in another thread, you do not need to worry about this, and can simply block in the signal handler until the UI thread returns an answer.
§Implements
DtlsConnectionExt
, DatagramBasedExt
, DatagramBasedExtManual
GLib type: GObject with reference counted clone semantics.
Implementations§
Source§impl DtlsConnection
impl DtlsConnection
pub const NONE: Option<&'static DtlsConnection> = None
Trait Implementations§
Source§impl Clone for DtlsConnection
impl Clone for DtlsConnection
Source§impl Debug for DtlsConnection
impl Debug for DtlsConnection
Source§impl HasParamSpec for DtlsConnection
impl HasParamSpec for DtlsConnection
type ParamSpec = ParamSpecObject
Source§type SetValue = DtlsConnection
type SetValue = DtlsConnection
type BuilderFn = fn(_: &str) -> ParamSpecObjectBuilder<'_, DtlsConnection>
fn param_spec_builder() -> Self::BuilderFn
Source§impl Hash for DtlsConnection
impl Hash for DtlsConnection
Source§impl Ord for DtlsConnection
impl Ord for DtlsConnection
Source§fn cmp(&self, other: &Self) -> Ordering
fn cmp(&self, other: &Self) -> Ordering
Comparison for two GObjects.
Compares the memory addresses of the provided objects.
1.21.0 · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Source§impl<OT: ObjectType> PartialEq<OT> for DtlsConnection
impl<OT: ObjectType> PartialEq<OT> for DtlsConnection
Source§impl<OT: ObjectType> PartialOrd<OT> for DtlsConnection
impl<OT: ObjectType> PartialOrd<OT> for DtlsConnection
Source§impl StaticType for DtlsConnection
impl StaticType for DtlsConnection
Source§fn static_type() -> Type
fn static_type() -> Type
Self
.impl Eq for DtlsConnection
impl IsA<DatagramBased> for DtlsConnection
impl IsA<DtlsConnection> for DtlsClientConnection
impl IsA<DtlsConnection> for DtlsServerConnection
Auto Trait Implementations§
impl Freeze for DtlsConnection
impl RefUnwindSafe for DtlsConnection
impl !Send for DtlsConnection
impl !Sync for DtlsConnection
impl Unpin for DtlsConnection
impl UnwindSafe for DtlsConnection
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Cast for Twhere
T: ObjectType,
impl<T> Cast for Twhere
T: ObjectType,
Source§fn upcast<T>(self) -> Twhere
T: ObjectType,
Self: IsA<T>,
fn upcast<T>(self) -> Twhere
T: ObjectType,
Self: IsA<T>,
T
. Read moreSource§fn upcast_ref<T>(&self) -> &Twhere
T: ObjectType,
Self: IsA<T>,
fn upcast_ref<T>(&self) -> &Twhere
T: ObjectType,
Self: IsA<T>,
T
. Read moreSource§fn downcast<T>(self) -> Result<T, Self>where
T: ObjectType,
Self: MayDowncastTo<T>,
fn downcast<T>(self) -> Result<T, Self>where
T: ObjectType,
Self: MayDowncastTo<T>,
T
. Read moreSource§fn downcast_ref<T>(&self) -> Option<&T>where
T: ObjectType,
Self: MayDowncastTo<T>,
fn downcast_ref<T>(&self) -> Option<&T>where
T: ObjectType,
Self: MayDowncastTo<T>,
T
. Read moreSource§fn dynamic_cast<T>(self) -> Result<T, Self>where
T: ObjectType,
fn dynamic_cast<T>(self) -> Result<T, Self>where
T: ObjectType,
T
. This handles upcasting, downcasting
and casting between interface and interface implementors. All checks are performed at
runtime, while upcast
will do many checks at compile-time already. downcast
will
perform the same checks at runtime as dynamic_cast
, but will also ensure some amount of
compile-time safety. Read moreSource§fn dynamic_cast_ref<T>(&self) -> Option<&T>where
T: ObjectType,
fn dynamic_cast_ref<T>(&self) -> Option<&T>where
T: ObjectType,
T
. This handles upcasting, downcasting
and casting between interface and interface implementors. All checks are performed at
runtime, while downcast
and upcast
will do many checks at compile-time already. Read moreSource§unsafe fn unsafe_cast<T>(self) -> Twhere
T: ObjectType,
unsafe fn unsafe_cast<T>(self) -> Twhere
T: ObjectType,
T
unconditionally. Read moreSource§unsafe fn unsafe_cast_ref<T>(&self) -> &Twhere
T: ObjectType,
unsafe fn unsafe_cast_ref<T>(&self) -> &Twhere
T: ObjectType,
&T
unconditionally. Read moreSource§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<O> DatagramBasedExt for Owhere
O: IsA<DatagramBased>,
impl<O> DatagramBasedExt for Owhere
O: IsA<DatagramBased>,
Source§fn condition_check(&self, condition: IOCondition) -> IOCondition
fn condition_check(&self, condition: IOCondition) -> IOCondition
Source§impl<O> DatagramBasedExtManual for Owhere
O: IsA<DatagramBased>,
impl<O> DatagramBasedExtManual for Owhere
O: IsA<DatagramBased>,
Source§fn create_source<F, C>(
&self,
condition: IOCondition,
cancellable: Option<&C>,
name: Option<&str>,
priority: Priority,
func: F,
) -> Source
fn create_source<F, C>( &self, condition: IOCondition, cancellable: Option<&C>, name: Option<&str>, priority: Priority, func: F, ) -> Source
fn create_source_future<C: IsA<Cancellable>>( &self, condition: IOCondition, cancellable: Option<&C>, priority: Priority, ) -> Pin<Box<dyn Future<Output = IOCondition> + 'static>>
fn create_source_stream<C: IsA<Cancellable>>( &self, condition: IOCondition, cancellable: Option<&C>, priority: Priority, ) -> Pin<Box<dyn Stream<Item = IOCondition> + 'static>>
Source§fn condition_wait(
&self,
condition: IOCondition,
timeout: Option<Duration>,
cancellable: Option<&impl IsA<Cancellable>>,
) -> Result<(), Error>
fn condition_wait( &self, condition: IOCondition, timeout: Option<Duration>, cancellable: Option<&impl IsA<Cancellable>>, ) -> Result<(), Error>
Source§fn receive_messages<'v, V: IntoIterator<Item = &'v mut [&'v mut [u8]]>, C: IsA<Cancellable>>(
&self,
messages: &mut [InputMessage<'_>],
flags: i32,
timeout: Option<Duration>,
cancellable: Option<&C>,
) -> Result<usize, Error>
fn receive_messages<'v, V: IntoIterator<Item = &'v mut [&'v mut [u8]]>, C: IsA<Cancellable>>( &self, messages: &mut [InputMessage<'_>], flags: i32, timeout: Option<Duration>, cancellable: Option<&C>, ) -> Result<usize, Error>
Source§fn send_messages<C: IsA<Cancellable>>(
&self,
messages: &mut [OutputMessage<'_>],
flags: i32,
timeout: Option<Duration>,
cancellable: Option<&C>,
) -> Result<usize, Error>
fn send_messages<C: IsA<Cancellable>>( &self, messages: &mut [OutputMessage<'_>], flags: i32, timeout: Option<Duration>, cancellable: Option<&C>, ) -> Result<usize, Error>
Source§impl<O> DtlsConnectionExt for Owhere
O: IsA<DtlsConnection>,
impl<O> DtlsConnectionExt for Owhere
O: IsA<DtlsConnection>,
Source§fn close(
&self,
cancellable: Option<&impl IsA<Cancellable>>,
) -> Result<(), Error>
fn close( &self, cancellable: Option<&impl IsA<Cancellable>>, ) -> Result<(), Error>
Source§fn close_async<P: FnOnce(Result<(), Error>) + 'static>(
&self,
io_priority: Priority,
cancellable: Option<&impl IsA<Cancellable>>,
callback: P,
)
fn close_async<P: FnOnce(Result<(), Error>) + 'static>( &self, io_priority: Priority, cancellable: Option<&impl IsA<Cancellable>>, callback: P, )
fn close_future( &self, io_priority: Priority, ) -> Pin<Box_<dyn Future<Output = Result<(), Error>> + 'static>>
Source§fn emit_accept_certificate(
&self,
peer_cert: &impl IsA<TlsCertificate>,
errors: TlsCertificateFlags,
) -> bool
fn emit_accept_certificate( &self, peer_cert: &impl IsA<TlsCertificate>, errors: TlsCertificateFlags, ) -> bool
Source§fn certificate(&self) -> Option<TlsCertificate>
fn certificate(&self) -> Option<TlsCertificate>
Source§fn ciphersuite_name(&self) -> Option<GString>
fn ciphersuite_name(&self) -> Option<GString>
v2_70
only.None
if the
connection has not handshaked or has been closed. Beware that the TLS
backend may use any of multiple different naming conventions, because
OpenSSL and GnuTLS have their own ciphersuite naming conventions that
are different from each other and different from the standard, IANA-
registered ciphersuite names. The ciphersuite name is intended to be
displayed to the user for informative purposes only, and parsing it
is not recommended. Read moreSource§fn database(&self) -> Option<TlsDatabase>
fn database(&self) -> Option<TlsDatabase>
Source§fn interaction(&self) -> Option<TlsInteraction>
fn interaction(&self) -> Option<TlsInteraction>
Source§fn negotiated_protocol(&self) -> Option<GString>
fn negotiated_protocol(&self) -> Option<GString>
v2_60
only.Source§fn peer_certificate(&self) -> Option<TlsCertificate>
fn peer_certificate(&self) -> Option<TlsCertificate>
Source§fn peer_certificate_errors(&self) -> TlsCertificateFlags
fn peer_certificate_errors(&self) -> TlsCertificateFlags
Source§fn protocol_version(&self) -> TlsProtocolVersion
fn protocol_version(&self) -> TlsProtocolVersion
v2_70
only.TlsProtocolVersion::Unknown
if the connection has not handshaked, or
has been closed, or if the TLS backend has implemented a protocol version
that is not a recognized #GTlsProtocolVersion. Read moreSource§fn rehandshake_mode(&self) -> TlsRehandshakeMode
fn rehandshake_mode(&self) -> TlsRehandshakeMode
Source§fn requires_close_notify(&self) -> bool
fn requires_close_notify(&self) -> bool
Source§fn handshake(
&self,
cancellable: Option<&impl IsA<Cancellable>>,
) -> Result<(), Error>
fn handshake( &self, cancellable: Option<&impl IsA<Cancellable>>, ) -> Result<(), Error>
Source§fn handshake_async<P: FnOnce(Result<(), Error>) + 'static>(
&self,
io_priority: Priority,
cancellable: Option<&impl IsA<Cancellable>>,
callback: P,
)
fn handshake_async<P: FnOnce(Result<(), Error>) + 'static>( &self, io_priority: Priority, cancellable: Option<&impl IsA<Cancellable>>, callback: P, )
fn handshake_future( &self, io_priority: Priority, ) -> Pin<Box_<dyn Future<Output = Result<(), Error>> + 'static>>
Source§fn set_advertised_protocols(&self, protocols: &[&str])
fn set_advertised_protocols(&self, protocols: &[&str])
v2_60
only.None
for the the value
of @protocols will disable ALPN negotiation. Read moreSource§fn set_certificate(&self, certificate: &impl IsA<TlsCertificate>)
fn set_certificate(&self, certificate: &impl IsA<TlsCertificate>)
Source§fn set_database(&self, database: Option<&impl IsA<TlsDatabase>>)
fn set_database(&self, database: Option<&impl IsA<TlsDatabase>>)
None
, then
peer certificate validation will always set the
TlsCertificateFlags::UNKNOWN_CA
error (meaning
#GDtlsConnection::accept-certificate will always be emitted on
client-side connections, unless that bit is not set in
#GDtlsClientConnection:validation-flags). Read moreSource§fn set_interaction(&self, interaction: Option<&impl IsA<TlsInteraction>>)
fn set_interaction(&self, interaction: Option<&impl IsA<TlsInteraction>>)
Source§fn set_rehandshake_mode(&self, mode: TlsRehandshakeMode)
fn set_rehandshake_mode(&self, mode: TlsRehandshakeMode)
Source§fn set_require_close_notify(&self, require_close_notify: bool)
fn set_require_close_notify(&self, require_close_notify: bool)
true
(the default),
then @self will expect to receive a TLS close notification from its
peer before the connection is closed, and will return a
TlsError::Eof
error if the connection is closed without proper
notification (since this may indicate a network error, or
man-in-the-middle attack). Read moreSource§fn shutdown(
&self,
shutdown_read: bool,
shutdown_write: bool,
cancellable: Option<&impl IsA<Cancellable>>,
) -> Result<(), Error>
fn shutdown( &self, shutdown_read: bool, shutdown_write: bool, cancellable: Option<&impl IsA<Cancellable>>, ) -> Result<(), Error>
Source§fn shutdown_async<P: FnOnce(Result<(), Error>) + 'static>(
&self,
shutdown_read: bool,
shutdown_write: bool,
io_priority: Priority,
cancellable: Option<&impl IsA<Cancellable>>,
callback: P,
)
fn shutdown_async<P: FnOnce(Result<(), Error>) + 'static>( &self, shutdown_read: bool, shutdown_write: bool, io_priority: Priority, cancellable: Option<&impl IsA<Cancellable>>, callback: P, )
fn shutdown_future( &self, shutdown_read: bool, shutdown_write: bool, io_priority: Priority, ) -> Pin<Box_<dyn Future<Output = Result<(), Error>> + 'static>>
Source§fn advertised_protocols(&self) -> Vec<GString>
fn advertised_protocols(&self) -> Vec<GString>
v2_60
only.Source§fn base_socket(&self) -> Option<DatagramBased>
fn base_socket(&self) -> Option<DatagramBased>
Source§fn connect_accept_certificate<F: Fn(&Self, &TlsCertificate, TlsCertificateFlags) -> bool + 'static>(
&self,
f: F,
) -> SignalHandlerId
fn connect_accept_certificate<F: Fn(&Self, &TlsCertificate, TlsCertificateFlags) -> bool + 'static>( &self, f: F, ) -> SignalHandlerId
Source§fn connect_advertised_protocols_notify<F: Fn(&Self) + 'static>(
&self,
f: F,
) -> SignalHandlerId
fn connect_advertised_protocols_notify<F: Fn(&Self) + 'static>( &self, f: F, ) -> SignalHandlerId
v2_60
only.fn connect_certificate_notify<F: Fn(&Self) + 'static>( &self, f: F, ) -> SignalHandlerId
Source§fn connect_ciphersuite_name_notify<F: Fn(&Self) + 'static>(
&self,
f: F,
) -> SignalHandlerId
fn connect_ciphersuite_name_notify<F: Fn(&Self) + 'static>( &self, f: F, ) -> SignalHandlerId
v2_70
only.fn connect_database_notify<F: Fn(&Self) + 'static>( &self, f: F, ) -> SignalHandlerId
fn connect_interaction_notify<F: Fn(&Self) + 'static>( &self, f: F, ) -> SignalHandlerId
Source§fn connect_negotiated_protocol_notify<F: Fn(&Self) + 'static>(
&self,
f: F,
) -> SignalHandlerId
fn connect_negotiated_protocol_notify<F: Fn(&Self) + 'static>( &self, f: F, ) -> SignalHandlerId
v2_60
only.fn connect_peer_certificate_notify<F: Fn(&Self) + 'static>( &self, f: F, ) -> SignalHandlerId
fn connect_peer_certificate_errors_notify<F: Fn(&Self) + 'static>( &self, f: F, ) -> SignalHandlerId
Source§fn connect_protocol_version_notify<F: Fn(&Self) + 'static>(
&self,
f: F,
) -> SignalHandlerId
fn connect_protocol_version_notify<F: Fn(&Self) + 'static>( &self, f: F, ) -> SignalHandlerId
v2_70
only.Source§fn connect_rehandshake_mode_notify<F: Fn(&Self) + 'static>(
&self,
f: F,
) -> SignalHandlerId
fn connect_rehandshake_mode_notify<F: Fn(&Self) + 'static>( &self, f: F, ) -> SignalHandlerId
fn connect_require_close_notify_notify<F: Fn(&Self) + 'static>( &self, f: F, ) -> SignalHandlerId
Source§impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
Source§impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GPtrArray> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GPtrArray> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
Source§impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GSList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GSList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
Source§impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
Source§impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GPtrArray> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GPtrArray> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
Source§impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GSList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GSList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
Source§impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
Source§impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GPtrArray> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GPtrArray> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
Source§impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GSList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GSList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
Source§impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
Source§impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GPtrArray> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GPtrArray> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
Source§impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GSList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GSList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
Source§impl<T> IntoClosureReturnValue for T
impl<T> IntoClosureReturnValue for T
fn into_closure_return_value(self) -> Option<Value>
Source§impl<T> ObjectExt for Twhere
T: ObjectType,
impl<T> ObjectExt for Twhere
T: ObjectType,
Source§fn is<U>(&self) -> boolwhere
U: StaticType,
fn is<U>(&self) -> boolwhere
U: StaticType,
true
if the object is an instance of (can be cast to) T
.Source§fn object_class(&self) -> &Class<Object>
fn object_class(&self) -> &Class<Object>
ObjectClass
of the object. Read moreSource§fn class_of<U>(&self) -> Option<&Class<U>>where
U: IsClass,
fn class_of<U>(&self) -> Option<&Class<U>>where
U: IsClass,
T
. Read moreSource§fn interface<U>(&self) -> Option<InterfaceRef<'_, U>>where
U: IsInterface,
fn interface<U>(&self) -> Option<InterfaceRef<'_, U>>where
U: IsInterface,
T
of the object. Read moreSource§fn set_property_from_value(&self, property_name: &str, value: &Value)
fn set_property_from_value(&self, property_name: &str, value: &Value)
Source§fn set_properties(&self, property_values: &[(&str, &dyn ToValue)])
fn set_properties(&self, property_values: &[(&str, &dyn ToValue)])
Source§fn set_properties_from_value(&self, property_values: &[(&str, Value)])
fn set_properties_from_value(&self, property_values: &[(&str, Value)])
Source§fn property<V>(&self, property_name: &str) -> Vwhere
V: for<'b> FromValue<'b> + 'static,
fn property<V>(&self, property_name: &str) -> Vwhere
V: for<'b> FromValue<'b> + 'static,
property_name
of the object and cast it to the type V. Read moreSource§fn property_value(&self, property_name: &str) -> Value
fn property_value(&self, property_name: &str) -> Value
property_name
of the object. Read moreSource§fn property_type(&self, property_name: &str) -> Option<Type>
fn property_type(&self, property_name: &str) -> Option<Type>
property_name
of this object. Read moreSource§fn find_property(&self, property_name: &str) -> Option<ParamSpec>
fn find_property(&self, property_name: &str) -> Option<ParamSpec>
ParamSpec
of the property property_name
of this object.Source§fn list_properties(&self) -> PtrSlice<ParamSpec>
fn list_properties(&self) -> PtrSlice<ParamSpec>
ParamSpec
of the properties of this object.Source§fn freeze_notify(&self) -> PropertyNotificationFreezeGuard
fn freeze_notify(&self) -> PropertyNotificationFreezeGuard
Source§unsafe fn set_qdata<QD>(&self, key: Quark, value: QD)where
QD: 'static,
unsafe fn set_qdata<QD>(&self, key: Quark, value: QD)where
QD: 'static,
key
. Read moreSource§unsafe fn qdata<QD>(&self, key: Quark) -> Option<NonNull<QD>>where
QD: 'static,
unsafe fn qdata<QD>(&self, key: Quark) -> Option<NonNull<QD>>where
QD: 'static,
key
. Read moreSource§unsafe fn steal_qdata<QD>(&self, key: Quark) -> Option<QD>where
QD: 'static,
unsafe fn steal_qdata<QD>(&self, key: Quark) -> Option<QD>where
QD: 'static,
key
. Read moreSource§unsafe fn set_data<QD>(&self, key: &str, value: QD)where
QD: 'static,
unsafe fn set_data<QD>(&self, key: &str, value: QD)where
QD: 'static,
key
. Read moreSource§unsafe fn data<QD>(&self, key: &str) -> Option<NonNull<QD>>where
QD: 'static,
unsafe fn data<QD>(&self, key: &str) -> Option<NonNull<QD>>where
QD: 'static,
key
. Read moreSource§unsafe fn steal_data<QD>(&self, key: &str) -> Option<QD>where
QD: 'static,
unsafe fn steal_data<QD>(&self, key: &str) -> Option<QD>where
QD: 'static,
key
. Read moreSource§fn block_signal(&self, handler_id: &SignalHandlerId)
fn block_signal(&self, handler_id: &SignalHandlerId)
Source§fn unblock_signal(&self, handler_id: &SignalHandlerId)
fn unblock_signal(&self, handler_id: &SignalHandlerId)
Source§fn stop_signal_emission(&self, signal_id: SignalId, detail: Option<Quark>)
fn stop_signal_emission(&self, signal_id: SignalId, detail: Option<Quark>)
Source§fn stop_signal_emission_by_name(&self, signal_name: &str)
fn stop_signal_emission_by_name(&self, signal_name: &str)
Source§fn connect<F>(
&self,
signal_name: &str,
after: bool,
callback: F,
) -> SignalHandlerId
fn connect<F>( &self, signal_name: &str, after: bool, callback: F, ) -> SignalHandlerId
signal_name
on this object. Read moreSource§fn connect_id<F>(
&self,
signal_id: SignalId,
details: Option<Quark>,
after: bool,
callback: F,
) -> SignalHandlerId
fn connect_id<F>( &self, signal_id: SignalId, details: Option<Quark>, after: bool, callback: F, ) -> SignalHandlerId
signal_id
on this object. Read moreSource§fn connect_local<F>(
&self,
signal_name: &str,
after: bool,
callback: F,
) -> SignalHandlerId
fn connect_local<F>( &self, signal_name: &str, after: bool, callback: F, ) -> SignalHandlerId
signal_name
on this object. Read moreSource§fn connect_local_id<F>(
&self,
signal_id: SignalId,
details: Option<Quark>,
after: bool,
callback: F,
) -> SignalHandlerId
fn connect_local_id<F>( &self, signal_id: SignalId, details: Option<Quark>, after: bool, callback: F, ) -> SignalHandlerId
signal_id
on this object. Read moreSource§unsafe fn connect_unsafe<F>(
&self,
signal_name: &str,
after: bool,
callback: F,
) -> SignalHandlerId
unsafe fn connect_unsafe<F>( &self, signal_name: &str, after: bool, callback: F, ) -> SignalHandlerId
signal_name
on this object. Read moreSource§unsafe fn connect_unsafe_id<F>(
&self,
signal_id: SignalId,
details: Option<Quark>,
after: bool,
callback: F,
) -> SignalHandlerId
unsafe fn connect_unsafe_id<F>( &self, signal_id: SignalId, details: Option<Quark>, after: bool, callback: F, ) -> SignalHandlerId
signal_id
on this object. Read moreSource§fn connect_closure(
&self,
signal_name: &str,
after: bool,
closure: RustClosure,
) -> SignalHandlerId
fn connect_closure( &self, signal_name: &str, after: bool, closure: RustClosure, ) -> SignalHandlerId
signal_name
on this object. Read moreSource§fn connect_closure_id(
&self,
signal_id: SignalId,
details: Option<Quark>,
after: bool,
closure: RustClosure,
) -> SignalHandlerId
fn connect_closure_id( &self, signal_id: SignalId, details: Option<Quark>, after: bool, closure: RustClosure, ) -> SignalHandlerId
signal_id
on this object. Read moreSource§fn watch_closure(&self, closure: &impl AsRef<Closure>)
fn watch_closure(&self, closure: &impl AsRef<Closure>)
closure
to the lifetime of the object. When
the object’s reference count drops to zero, the closure will be
invalidated. An invalidated closure will ignore any calls to
invoke_with_values
, or
invoke
when using Rust closures.Source§fn emit<R>(&self, signal_id: SignalId, args: &[&dyn ToValue]) -> Rwhere
R: TryFromClosureReturnValue,
fn emit<R>(&self, signal_id: SignalId, args: &[&dyn ToValue]) -> Rwhere
R: TryFromClosureReturnValue,
Source§fn emit_with_values(&self, signal_id: SignalId, args: &[Value]) -> Option<Value>
fn emit_with_values(&self, signal_id: SignalId, args: &[Value]) -> Option<Value>
Self::emit
but takes Value
for the arguments.Source§fn emit_by_name<R>(&self, signal_name: &str, args: &[&dyn ToValue]) -> Rwhere
R: TryFromClosureReturnValue,
fn emit_by_name<R>(&self, signal_name: &str, args: &[&dyn ToValue]) -> Rwhere
R: TryFromClosureReturnValue,
Source§fn emit_by_name_with_values(
&self,
signal_name: &str,
args: &[Value],
) -> Option<Value>
fn emit_by_name_with_values( &self, signal_name: &str, args: &[Value], ) -> Option<Value>
Source§fn emit_by_name_with_details<R>(
&self,
signal_name: &str,
details: Quark,
args: &[&dyn ToValue],
) -> Rwhere
R: TryFromClosureReturnValue,
fn emit_by_name_with_details<R>(
&self,
signal_name: &str,
details: Quark,
args: &[&dyn ToValue],
) -> Rwhere
R: TryFromClosureReturnValue,
Source§fn emit_by_name_with_details_and_values(
&self,
signal_name: &str,
details: Quark,
args: &[Value],
) -> Option<Value>
fn emit_by_name_with_details_and_values( &self, signal_name: &str, details: Quark, args: &[Value], ) -> Option<Value>
Source§fn emit_with_details<R>(
&self,
signal_id: SignalId,
details: Quark,
args: &[&dyn ToValue],
) -> Rwhere
R: TryFromClosureReturnValue,
fn emit_with_details<R>(
&self,
signal_id: SignalId,
details: Quark,
args: &[&dyn ToValue],
) -> Rwhere
R: TryFromClosureReturnValue,
Source§fn emit_with_details_and_values(
&self,
signal_id: SignalId,
details: Quark,
args: &[Value],
) -> Option<Value>
fn emit_with_details_and_values( &self, signal_id: SignalId, details: Quark, args: &[Value], ) -> Option<Value>
Source§fn disconnect(&self, handler_id: SignalHandlerId)
fn disconnect(&self, handler_id: SignalHandlerId)
Source§fn connect_notify<F>(&self, name: Option<&str>, f: F) -> SignalHandlerId
fn connect_notify<F>(&self, name: Option<&str>, f: F) -> SignalHandlerId
notify
signal of the object. Read moreSource§fn connect_notify_local<F>(&self, name: Option<&str>, f: F) -> SignalHandlerId
fn connect_notify_local<F>(&self, name: Option<&str>, f: F) -> SignalHandlerId
notify
signal of the object. Read moreSource§unsafe fn connect_notify_unsafe<F>(
&self,
name: Option<&str>,
f: F,
) -> SignalHandlerId
unsafe fn connect_notify_unsafe<F>( &self, name: Option<&str>, f: F, ) -> SignalHandlerId
notify
signal of the object. Read more