import {Ice} from 'ice'; declare module './Ice.ns' { namespace Ice { /** * A factory for values. Value factories are used in several * places, such as when Ice receives a class instance and * when Freeze restores a persistent value. Value factories * must be implemented by the application writer and registered * with the communicator. */ interface ValueFactory { /** * Create a new value for a given value type. The type is the * absolute Slice type id, i.e., the id relative to the * unnamed top-level Slice module. For example, the absolute * Slice type id for an interface Bar in the module * Foo is ::Foo::Bar. * *
The leading "::" is required. * * @param type The value type. * * @return The value created for the given type, or nil if the * factory is unable to create the value. */ create(type: string): Ice.Value | null; } /** * A value factory manager maintains a collection of value factories. * An application can supply a custom implementation during communicator * initialization, otherwise Ice provides a default implementation. * * @see ValueFactory */ interface ValueFactoryManager { /** *
Add a value factory. Attempting to add a * factory with an id for which a factory is already registered * throws {@link AlreadyRegisteredException}.
* *When unmarshaling an Ice value, the Ice run time reads the * most-derived type id off the wire and attempts to create an * instance of the type using a factory. If no instance is created, * either because no factory was found, or because all factories * returned nil, the behavior of the Ice run time depends on the * format with which the value was marshaled:
* *If the value uses the "sliced" format, Ice ascends the class * hierarchy until it finds a type that is recognized by a factory, * or it reaches the least-derived type. If no factory is found that * can create an instance, the run time throws * {@link NoValueFactoryException}.
* *If the value uses the "compact" format, Ice immediately raises * {@link NoValueFactoryException}.
* *The following order is used to locate a factory for a type:
* *