init
Description:
Initializes the object implementing the interface.
This method is intended for language bindings. If writing in C, @new should typically be used instead.
The object must be initialized before any real use after initial construction, either with this function or init_async.
Implementations may also support cancellation. If cancellable
is not null, then initialization
can be cancelled by triggering the cancellable object from another thread. If the operation was cancelled, the error
g_io_error_cancelled will be returned. If cancellable
is not null and the object doesn't
support cancellable initialization the error g_io_error_not_supported will be returned.
If the object is not initialized, or initialization returns with an error, then all operations on the object except @ref and unref are considered to be invalid, and have undefined behaviour. See the introduction for more details.
Callers should not assume that a class which implements Initable can be initialized
multiple times, unless the class explicitly documents itself as supporting this. Generally, a class’ implementation of init
can
assume (and assert) that it will only be called once. Previously, this documentation recommended all
Initable implementations should be idempotent; that recommendation was relaxed in
GLib 2.54.
If a class explicitly supports being initialized multiple times, it is recommended that the method is idempotent: multiple calls with the same arguments should return the same results. Only the first call initializes the object; further calls return the result of the first call.
One reason why a class might need to support idempotent initialization is if it is designed to be used via the singleton pattern, with a
GObjectClass.constructor
that sometimes returns an existing instance. In this pattern, a caller would expect to be able to call
init on the result of @new,
regardless of whether it is in fact a new instance.
Parameters:
this |
a Initable. |
cancellable |
optional Cancellable object, null to ignore. |
Returns:
true if successful. If an error has occurred, this function will return false and set throws appropriately if present. |