public abstract bool init (Cancellable? cancellable = null) throws Error

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.



a Initable.


optional Cancellable object, null to ignore.


true if successful. If an error has occurred, this function will return false and set throws appropriately if present.