Ice.Plugin.*
3 min read
2 min read
2 min read
3 min read
3 min read
3 min read
3 min read
3 min read
Ice.Plugin.name
Synopsis
Ice.Plugin.name=path[,version]:function [args]
Description
Defines a C++ plug-in to be installed during communicator initialization. The path and optional version components are used to construct the path name of a DLL or shared library. If no version is supplied, the Ice version is used. The function component is the name of a function with C linkage. For example, the entry point MyPlugin,38:create would imply a shared library name of libMyPlugin.so.38 on Linux, libMyPlugin.38.dylib on macOS, and MyPlugin38.dll on Windows. Furthermore, if Ice is built on Windows with debugging, a d is automatically appended to the version (for example, MyPlugin38d.dll). On macOS, if the .dylib cannot be loaded, Ice also tries libMyPlugin.38.so and libMyPlugin.38.bundle.
Arguments of the form --name.X=Y set the property name.X to Y and are removed from the argument list passed to the factory, where name is the plug-in name. For example, --MyPlugin.Mode=fast sets MyPlugin.Mode=fast.
Ice passes the remaining arguments to the entry point function. For example:
Ice.Plugin.MyPlugin=MyFactory,38:create arg1 arg2Whitespace separates the arguments, and any arguments that contain whitespace must be enclosed in quotes.
The path component may optionally contain a relative or absolute path name, indicated by the presence of a path separator (/ or \). In this case, the last component of the path is used to construct the version-specific name of the shared library or DLL. Consider this example:
Ice.Plugin.MyPlugin=./MyFactory,38:create arg1 arg2The use of a relative path means the Ice runtime looks in the current working directory for libMyFactory.so.38 on Linux, libMyFactory.38.dylib on macOS, or MyFactory38.dll on Windows.
If the path component contains spaces, the entire entry point must be enclosed in quotes:
Ice.Plugin.MyPlugin="C:\Program Files\MyPlugin\MyFactory,38:create" arg1 arg2If the path component does not include a leading path name, Ice delegates to the operating system to locate the shared library or DLL, which typically means that the plug-in can reside in any of the directories in your shared library or DLL search path.
Ice includes the IceDiscovery and IceLocatorDiscovery plug-in factories in this mapping. A non-empty value for either property enables the corresponding built-in factory; the entry-point token is ignored:
Ice.Plugin.IceDiscovery=1Ice.Plugin.IceLocatorDiscovery=1Ice passes the remaining arguments after the first token to the factory. Ice creates these built-in plug-ins before dynamically loaded plug-ins.
Synopsis
Ice.Plugin.name=assembly:class [args]
Description
Defines a C# plug-in to be installed during communicator initialization. The assembly component can be a partially or fully qualified assembly name, or an assembly path name.
The assembly component accepts these forms:
| Form | Examples |
|---|---|
Assembly name | myplugin,Version=...,Culture=neutral,publicKeyToken=... or myplugin |
Assembly path | MyPlugin.dll, plugins\MyPlugin.dll or C:\plugins\MyPlugin.dll |
The specified class must implement the PluginFactory interface.
Arguments of the form --name.X=Y set the property name.X to Y and are removed from the argument list passed to the factory, where name is the plug-in name. For example, --MyPlugin.Mode=fast sets MyPlugin.Mode=fast.
Ice passes the remaining arguments to the factory's create method. For example:
Ice.Plugin.MyPlugin=MyFactory,Version=1.2.3.4:MyFactory arg1 arg2The factory class must provide a public parameterless constructor.
Whitespace separates the arguments, and any arguments that contain whitespace must be enclosed in quotes.
If you specify a relative path name in the entry point, the assembly is located relative to the program's current working directory:
Ice.Plugin.MyPlugin=..\MyFactory.dll:MyFactory arg1 arg2Enclose the assembly's path name in quotes if it contains spaces:
Ice.Plugin.MyPlugin="C:\Program Files\MyPlugin\MyFactory.dll:MyFactory" arg1 arg2Assembly names use the .NET assembly-loading rules, including already-loaded assemblies, probing paths and assembly-resolution callbacks.
A matching Ice.Plugin.name property can also supply arguments for a factory installed through InitializationData.pluginFactories. Ice ignores the first token of the value, which holds the entry point of a plug-in loaded through configuration, and passes the remaining tokens to the factory. By convention, this first token is 1.
Synopsis
Ice.Plugin.name=[path:]class [args]
Description
Defines a Java plug-in to be installed during communicator initialization. The specified class must implement the PluginFactory interface.
Arguments of the form --name.X=Y set the property name.X to Y and are removed from the argument list passed to the factory, where name is the plug-in name. For example, --MyPlugin.Mode=fast sets MyPlugin.Mode=fast.
Ice passes the remaining arguments to the factory's create method. For example:
Ice.Plugin.MyPlugin=MyFactory arg1 arg2The factory class and its no-argument constructor must be public.
Whitespace separates the arguments, and any arguments that contain whitespace must be enclosed in quotes.
If path is specified, it may be the path name of a JAR file or class directory, as shown below:
Ice.Plugin.MyPlugin=MyFactory.jar:MyFactoryIce.Plugin.MyOtherPlugin=/classes:MyOtherFactoryIf path contains spaces, it must be enclosed in quotes:
Ice.Plugin.MyPlugin="factory classes.jar":MyFactoryIf class is specified without a path, Ice attempts to load the class using class loaders. See InitializationData.classLoader.
A matching Ice.Plugin.name property can also supply arguments for a factory installed through InitializationData.pluginFactories. Ice ignores the first token of the value, which holds the entry point of a plug-in loaded through configuration, and passes the remaining tokens to the factory. By convention, this first token is 1.