ExtensionManager#
Fully qualified name: omni::ext::ExtensionManager
Defined in omni/ext/IExtensions.h
-
class ExtensionManager : public carb::IObject#
The manager class that is responsible for all Extensions.
See also
Public Functions
-
virtual void processAndApplyAllChanges() = 0#
Process all outstanding extension changes since the previous call to this function.
If an extension was changed it will be reloaded. If it was added or removed (including adding new folders) changes will also be applied. Events (kGlobalEventScriptChanged, kGlobalEventFolderChanged) are also dispatched.
-
virtual size_t getExtensionCount() const = 0#
Returns the number of registered local extensions.
- Returns:
the number of registered local extensions
-
virtual void getExtensions(ExtensionInfo *extensions) const = 0#
Fills an array with information about registered local extensions.
- Parameters:
extensions – The array of ExtensionInfo structs to be filled. It must be large enough to hold getExtensionCount() entries.
- virtual carb::dictionary::Item *getExtensionDict(
- const char *extId,
Get an extension info dictionary for a single extension.
See also
- Parameters:
extId – The extension ID to retrieve info for
- Returns:
A carb::dictionary::Item pointer containing the information;
nullptr
if the extension was not found.
- inline void setExtensionEnabled(
- const char *extensionId,
- bool enabled,
Helper function to enable or disable a single extension.
See also
Note
The operation is deferred until processAndApplyAllChanges() is called. Use setExtensionEnabledImmediate() to perform the action immediately.
- Parameters:
extensionId – The extension ID to enable or disable
enabled –
true
to enable the extension;false
to disable the extension
- virtual void setExtensionEnabledBatch(
- const char **extensionIds,
- size_t extensionIdCount,
- bool enabled,
Enables or disables several extensions.
Note
The operation is deferred until processAndApplyAllChanges() is called. Use setExtensionEnabledBatchImmediate() to perform the action immediately.
- Parameters:
extensionIds – An array of extension IDs that should be enabled or disabled
extensionIdCount – The number of items in
extensionIds
enabled –
true
to enable the extensions;false
to disable the extensions
- inline bool setExtensionEnabledImmediate(
- const char *extensionId,
- bool enabled,
Helper function to enable or disable a single extension, immediately.
See also
- Parameters:
extensionId – The extension ID to enable or disable
enabled –
true
to enable the extension;false
to disable the extension
- Returns:
true
if the operation could be completed;false
otherwise
- virtual bool setExtensionEnabledBatchImmediate(
- const char **extensionIds,
- size_t extensionIdCount,
- bool enabled,
Enables or disables several extensions immediately.
- Parameters:
extensionIds – An array of extension IDs that should be enabled or disabled
extensionIdCount – The number of items in
extensionIds
enabled –
true
to enable the extensions;false
to disable the extensions
- Returns:
true
if the operation could be completed;false
otherwise
- virtual void setExtensionsExcluded(
- const char **extensionIds,
- size_t extensionIdCount,
Set extensions to exclude on following solver/startup routines.
Note
The extensions set persist until next call to this function.
- Parameters:
extensionIds – An array of extension IDs that should be excluded
extensionIdCount – The number of items in
extensionIds
-
virtual size_t getFolderCount() const = 0#
Gets number of monitored extension folders.
- Returns:
Extension folder count.
- virtual void getFolders(
- ExtensionFolderInfo *extensionFolderInfos,
Gets monitored extension folders.
- Parameters:
extensionFolderInfos – The extension folder info array to be filled. It must be large enough to hold getFolderCount() entries.
- virtual void addPath(
- const char *path,
- ExtensionPathType type = ExtensionPathType::eCollection,
Add extension path.
See also
- Parameters:
path – The path to add (folder or direct path)
type – An ExtensionPathType describing how
path
should be treated
-
virtual void removePath(const char *path) = 0#
Remove extension path.
See also
- Parameters:
path – The path previously given to addPath()
-
virtual carb::events::IEventStream *getChangeEventStream() const = 0#
Accesses the IEventStream that is used for change events.
See also
Warning
This function is deprecated in favor of Events 2.0 using carb.eventdispatcher.plugin with named events (see kGlobalEventScriptChanged, kGlobalEventFolderChanged).
- Returns:
The carb::events::IEventStream used for change events
-
virtual IExtensionManagerHooks *getHooks() const = 0#
Interface to install hooks to “extend” extension manager.
- Returns:
an IExtensionManagerHooks instance to allow hooking the Extension Manager
- virtual bool addRegistryProvider(
- const char *providerName,
- IRegistryProvider *provider,
Adds a new registry provider.
See also
- Parameters:
providerName – unique name for the registry provider
provider – a IRegistryProvider instance that will be retained by
*this
- Returns:
true
if registration was successful;false
otherwise (i.e. the provided name was not unique)
-
virtual void removeRegistryProvider(const char *providerName) = 0#
Removes a registry provider.
See also
- Parameters:
providerName – the unique name previously passed to addRegistryProvider()
-
virtual size_t getRegistryProviderCount() const = 0#
Gets the number of current registry providers.
- Returns:
the number of registry providers
-
virtual void getRegistryProviders(RegistryProviderInfo *infos) = 0#
Fills an array with info about current registry providers.
- Parameters:
infos – an array of RegistryProviderInfo objects to be filled. It must be large enough to hold getRegistryProviderCount() entries.
-
virtual void refreshRegistry() = 0#
Non blocking call to initiate registry refresh.
-
virtual bool syncRegistry() = 0#
Blocking call to synchronize with remote registry.
- Returns:
true
if the synchronization was successful;false
if an error occurred.
-
virtual size_t getRegistryExtensionCount() const = 0#
Gets the number of extensions in the registry.
- virtual void getRegistryExtensions(
- ExtensionInfo *extensions,
Fills an array with compatible extensions in the registry.
- Parameters:
extensions – an array of ExtensionInfo objects to be filled. It must be large enough to hold getRegistryExtensionCount() entries.
-
virtual size_t getRegistryExtensionPackageCount() const = 0#
Gets the number of extension packages in the registry.
- virtual void getRegistryExtensionPackages(
- ExtensionInfo *extensions,
Fills the array with all extension packages in the registry.
Note
this function will return all extensions in the registry, including packages for other platforms, incompatible with current runtime.
- Parameters:
extensions – an array of ExtensionInfo objects to be filled. It must be large enough to hold getRegistryExtensionPackageCount() entries.
- virtual carb::dictionary::Item *getRegistryExtensionDict(
- const char *extId,
Get an extension info dictionary for a single extension from the registry.
See also
- Parameters:
extId – The extension ID to retrieve information for
- Returns:
A carb::dictionary::Item containing information about the given extension;
nullptr
if the extension ID was not found.
- virtual bool publishExtension(
- const char *extId,
- const char *providerName = "",
- bool allowOverwrite = false,
Package and upload extension to the registry.
See also
Note
If
providerName
is empty and there are multiple providers, the provider specified in the setting key/app/extensions/registryPublishDefault
is used.- Parameters:
extId – The extension ID to publish
providerName – The provider name to use for publish. If an empty string is provided and multiple providers are registered, the provider specified in the setting key
/app/extensions/registryPublishDefault
is used.allowOverwrite – If
true
, the extension already specified in the registry maybe overwritten
- virtual bool unpublishExtension(
- const char *extId,
- const char *providerName = "",
Removes an extension from the registry.
See also
Note
If
providerName
is empty and there are multiple providers, the provider specified in the setting key/app/extensions/registryPublishDefault
is used.- Parameters:
extId – The extension ID to unpublish
providerName – The provider name to use. If an empty string is provided and multiple providers are registered, the provider specified in the setting key
/app/extensions/registryPublishDefault
is used.
-
virtual bool pullExtension(const char *extId) = 0#
Downloads the specified extension from the registry.
See also
Note
This is a blocking call. Use pullExtensionAsync() if asynchronous behavior is desired.
- Parameters:
extId – The extension ID to download
- Returns:
true
if the extension was downloaded successfully;false
otherwise.
-
virtual void pullExtensionAsync(const char *extId) = 0#
Starts an asynchronous extension download from the registry.
See also
Note
this function returns immediately
- Parameters:
extId – The extension ID to download
- virtual void fetchExtensionSummaries(
- ExtensionSummary **summaries,
- size_t *summaryCount,
Fetches extension summaries for all extensions.
Summary are extensions grouped by version. One summary per fullname(name+tag).
Note
The array that is received is valid until the next call to this function.
- Parameters:
summaries – [out] Receives an array of ExtensionSummary instances
summaryCount – [out] Receives the size of the array passed to
summaries
.
- virtual void fetchExtensionVersions(
- const char *nameAndVersion,
- ExtensionInfo **extensions,
- size_t *extensionCount,
Fetch all matching compatible extensions.
A partial version can also be passed. So
omni.foo
,omni.foo-2
,omni.foo-1.2.3
all valid values fornameAndVersion
.Note
The returned array is valid until next call of this function.
- Parameters:
nameAndVersion – The name (and optional partial or full version) to search
extensions – [out] Receives an array of ExtensionInfo instances
extensionCount – [out] Receives the size of the array passed to
extensions
- virtual void fetchExtensionPackages(
- const char *nameAndVersion,
- ExtensionInfo **extensions,
- size_t *extensionCount,
Fetch all matching extension packages.
A partial version can also be passed. So
omni.foo
,omni.foo-2
,omni.foo-1.2.3
all valid values fornameAndVersion
.This function will return all extensions in the registry, including packages for other platforms, incompatible with current runtime.
Note
The returned array is valid until next call of this function.
- Parameters:
nameAndVersion – The name (and optional partial or full version) to search
extensions – [out] Receives an array of ExtensionInfo instances
extensionCount – [out] Receives the size of the array passed to
extensions
-
virtual void disableAllExtensions() = 0#
Disables all enabled extensions.
Note
this is called automatically upon destruction.
-
virtual void addUserPaths() = 0#
Adds user paths from persistent settings.
All of the extension search path from persistent settings are added as ExtensionPathType::eCollectionUser.
-
virtual void addCachePath() = 0#
Add cache paths from settings.
All of the cache paths from settings are added as ExtensionPathType::eCollectionCache. This is necessary for registry usage.
- virtual bool generateVersionLock(
- const char *extId,
- const VersionLockDesc &desc,
Generate settings that contains versions of started dependencies to lock them (experimental).
- Parameters:
extId – The extension ID
desc – A VersionLockDesc descriptor
- Returns:
true
if generation succeeded;false
otherwise
- virtual bool addPathProtocolProvider(
- const char *scheme,
- IPathProtocolProvider *provider,
Adds a new path protocol provider.
See also
- Parameters:
scheme – A unique name for this provider
provider – A IPathProtocolProvider instance that will be retained by the Extension Manager
- Returns:
true
if the provider was registered;false
otherwise (i.e. ifscheme
is not unique)
-
virtual void removePathProtocolProvider(const char *scheme) = 0#
Removes a path protocol provider.
See also
- Parameters:
scheme – The unique name previously passed to addPathProtocolProvider()
- virtual bool solveExtensions(
- const SolverInput &input,
- ExtensionInfo **extensions,
- size_t *extensionCount,
- const char **errorMessage,
Runs the extension dependencies solver on the input.
Input is a list of extension, they can be names, full id, partial versions like
ommi.foo-2
.If solver succeeds it returns a list of extensions that satisfy the input and
true
, otherwiseerrorMessage
contains explanation of what failed.Note
The returned array and error message is valid until next call of this function.
- Parameters:
input – The SolverInput containing a list of extensions
extensions – [out] If
true
returned, receives an array of ExtensionInfo instances that satisfyinput
, otherwise undefinedextensionCount – [out] If
true
returned, receives the count of items passed toextensions
, otherwise undefinederrorMessage – [out] If
false
returned, receives an error message, otherwise undefined
- Returns:
true
if the solver succeeds andextensions
andextensionCount
contain the array of extensions that satisfyinput
;false
otherwise,errorMessage
contains a description of the error, butextensions
andextensionCount
are undefined and should not be accessed.
-
virtual size_t getExtensionPackageCount() const = 0#
Gets number of local extension packages.
- Returns:
the number of local extension packages
-
virtual void getExtensionPackages(ExtensionInfo *extensions) const = 0#
Fills an array with local extension packages.
Note
This function will return all local extensions, including packages for other platforms, incompatible with current targets.
- Parameters:
extensions – An array of ExtensionInfo instances to be filled. It must be large enough to hold getExtensionPackageCount() entries.
-
virtual bool uninstallExtension(const char *extId) = 0#
Removes a downloaded extension.
- Parameters:
extId – The extension ID to remove
- Returns:
true
if the extension was removed;false
otherwise
-
virtual size_t addRef() = 0#
Atomically add one to the reference count.
- Returns:
The current reference count after one was added, though this value may change before read if other threads are also modifying the reference count. The return value is guaranteed to be non-zero.
-
virtual size_t release() = 0#
Atomically subtracts one from the reference count.
If the result is zero, carb::deleteHandler() is called for
this
.- Returns:
The current reference count after one was subtracted. If zero is returned, carb::deleteHandler() was called for
this
.
Public Static Functions
- static inline constexpr carb::InterfaceDesc getInterfaceDesc(
Returns information about this interface.
Auto-generated by CARB_PLUGIN_INTERFACE() or CARB_PLUGIN_INTERFACE_EX.
- Returns:
The carb::InterfaceDesc struct with information about this interface.
- static inline constexpr carb::InterfaceDesc getLatestInterfaceDesc(
Returns information about the latest version of this interface.
Auto-generated by CARB_PLUGIN_INTERFACE() or CARB_PLUGIN_INTERFACE_EX.
- Returns:
The carb::InterfaceDesc struct with information about the latest version of this interface.
-
virtual void processAndApplyAllChanges() = 0#