<!--
 **********************************************************************

 Copyright (c) 2003-2005 ZeroC, Inc. All rights reserved.

 This copy of Ice is licensed to you under the terms described in the
 ICE_LICENSE file included in this distribution.

 **********************************************************************
-->

<para>
If not stated otherwise in the description of the individual
properties, the default value for all properties is the empty
string. If the property takes a numeric value, the empty
string is interpreted as zero.
</para>

<!-- ********************************************************************** -->
<section><title>&Ice; Configuration Property</title>
<!-- ********************************************************************** -->

<section><title>Ice.Config</title>
<section><title>Synopsis</title>
<synopsis>
--Ice.Config
--Ice.Config=1
--Ice.Config=<replaceable>config_file</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
This property must be set from the command line with the
<literal>--Ice.Config</literal>, <literal>--Ice.Config=1</literal>, or
<literal>--Ice.Config=</literal><replaceable>config_file</replaceable>
option.
</para>
<para>
If the <literal>Ice.Config</literal> property is empty or set to
<literal>1</literal>, the Ice run time examines the contents of the
<literal>ICE_CONFIG</literal> environment variable to retrieve the
pathname of a configuration file. Otherwise,
<literal>Ice.Config</literal> must be set to the pathname of a
configuration file. (Pathnames can be relative or absolute.)  Further
property values are read from the configuration file thus specified.
</para>

<section><title>Configuration File Syntax</title>
<para>
A configuration file contains a number of property settings, one setting per line.
Property settings have one of the forms
</para>
<synopsis>
<literal><replaceable>property_name</replaceable>=      # Set property to the empty string or zero</literal>
</synopsis>
<synopsis>
<literal><replaceable>property_name</replaceable>=<replaceable>value</replaceable> # Assign value to property</literal>
</synopsis>
<para>
The <literal>#</literal> character indicates a comment: the
<literal>#</literal> character and anything following the <literal>#</literal> character on the same
line are ignored. A line that has the <literal>#</literal> character as its first non-white space character
is ignored in its entirety.
</para>
<para>
A configuration file is free-form: blank, tab, and newline characters
serve as token delimiters and are otherwise ignored.
</para>
<para>
Any setting of the <literal>Ice.Config</literal> property inside the configuration file itself is ignored.
</para>
</section>

</section>

</section>

</section>

<!-- ********************************************************************** -->
<section><title>&Ice; Trace Properties</title>
<!-- ********************************************************************** -->

<section><title>Ice.Trace.GC</title>
<section><title>Synopsis</title>
<synopsis>
Ice.Trace.GC=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
The garbage collector trace level:
<informaltable>
<tgroup cols=2>
<tbody>
<row>
<entry>0</entry>
<entry>No garbage collector trace. (default)</entry>
</row>
<row>
<entry>1</entry>
<entry>Show the total number of instances collected, the total number of instances examined, the time spent
in the collector in milliseconds, and the total number of runs of the collector.</entry>
</row>
<row>
<entry>2</entry>
<entry>Like 1, but also produces a trace message for each run of the collector.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</section>
</section>

<section><title>Ice.Trace.Network</title>
<section><title>Synopsis</title>
<synopsis>
Ice.Trace.Network=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
The network trace level:
<informaltable>
<tgroup cols=2>
<tbody>
<row>
<entry>0</entry>
<entry>No network trace. (default)</entry>
</row>
<row>
<entry>1</entry>
<entry>Trace connection establishment and closure.</entry>
</row>
<row>
<entry>2</entry>
<entry>Like 1, but more detailed.</entry>
</row>
<row>
<entry>3</entry>
<entry>Like 2, but also trace data transfer.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</section>
</section>

<section><title>Ice.Trace.Protocol</title>
<section><title>Synopsis</title>
<synopsis>
Ice.Trace.Protocol=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
The protocol trace level:
<informaltable>
<tgroup cols=2>
<tbody>
<row>
<entry>0</entry>
<entry>No protocol trace. (default)</entry>
</row>
<row>
<entry>1</entry>
<entry>Trace &Ice; protocol messages.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</section>
</section>

<section><title>Ice.Trace.Retry</title>
<section><title>Synopsis</title>
<synopsis>
Ice.Trace.Retry=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
The request retry trace level:
<informaltable>
<tgroup cols=2>
<tbody>
<row>
<entry>0</entry>
<entry>No request retry trace. (default)</entry>
</row>
<row>
<entry>1</entry>
<entry>Trace &Ice; operation call retries.</entry>
</row>
<row>
<entry>2</entry>
<entry>Also trace &Ice; endpoint usage.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</section>
</section>

<section><title>Ice.Trace.Slicing</title>
<section><title>Synopsis</title>
<synopsis>
Ice.Trace.Slicing=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
The slicing trace level:
<informaltable>
<tgroup cols=2>
<tbody>
<row>
<entry>0</entry>
<entry>No trace of slicing activity. (default)</entry>
</row>
<row>
<entry>1</entry>
<entry>Trace all exception and class types that are unknown to the receiver and therefore sliced.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</section>
</section>

</section>

<!-- ********************************************************************** -->
<section><title>&Ice; Warning Properties</title>
<!-- ********************************************************************** -->

<section><title>Ice.Warn.Connections</title>
<section><title>Synopsis</title>
<synopsis>
Ice.Warn.Connections=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
If <replaceable>num</replaceable> is set to a value larger than zero,
Ice applications print warning messages for certain exceptional
conditions in connections. The default value is 0.
</para>
</section>
</section>

<section><title>Ice.Warn.Datagrams</title>
<section><title>Synopsis</title>
<synopsis>
Ice.Warn.Datagrams=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
If <replaceable>num</replaceable> is set to a value larger than zero,
servers print a warning message if they receive a datagram that exceeds the
servers' receive buffer size. (Note that this condition is not detected
by all UDP implementations -- some implementations silently drop received
datagrams that are too large.) The default value is 0.
</para>
</section>
</section>

<section><title>Ice.Warn.Dispatch</title>
<section><title>Synopsis</title>
<synopsis>
Ice.Warn.Dispatch=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
If <replaceable>num</replaceable> is set to a value larger than zero,
Ice applications print warning messages for certain exceptions
that are raised while an incoming request is dispatched.
<informaltable>
<tgroup cols=2>
<tbody>
<row>
<entry>0</entry>
<entry>No warnings.</entry>
</row>
<row>
<entry>1</entry>
<entry>Print warnings for unexpected
<literal>Ice::LocalException</literal>, <literal>Ice::UserException</literal>,
C++ exceptions, and Java runtime exceptions. (default)</entry>
</row>
<row>
<entry>2</entry>
<entry>Like 1, but also issue warnings for
<literal>Ice::ObjectNotExistException</literal>,
<literal>Ice::FacetNotExistException</literal>, and
<literal>Ice::OperationNotExistException</literal>.
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</section>
</section>

<section><title>Ice.Warn.AMICallback</title>
<section><title>Synopsis</title>
<synopsis>
Ice.Warn.AMICallback=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
If <replaceable>num</replaceable> is set to a value larger than zero,
warnings are printed if an AMI callback raises an exception. The
default value is 1.
</para>
</section>
</section>

<section><title>Ice.Warn.Leaks</title>
<section><title>Synopsis</title>
<synopsis>
Ice.Warn.Leaks=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
If <replaceable>num</replaceable> is set to a value larger than zero,
the <literal>Ice::Communicator</literal> destructor prints a
warning if some other Ice-related C++ objects are still in memory. The
default value is 1. (C++ only.)
</para>
</section>
</section>

</section>

<!-- ********************************************************************** -->
<section><title>&Ice; Object Adapter Properties</title>
<!-- ********************************************************************** -->

<section id="adapter.AdapterId"><title><replaceable>name</replaceable>.AdapterId</title>
<section><title>Synopsis</title>
<synopsis>
<replaceable>name</replaceable>.AdapterId=<replaceable>id</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Specifies an identifier for the object adapter with the name
<replaceable>name</replaceable>. This identifier must be unique among
all object adapters using the same locator instance. If a locator
proxy is defined using
<literal><replaceable>name</replaceable>.Locator</literal> or
<literal>Ice.Default.Locator</literal>, this object adapter sets
its endpoints with the locator registry upon activation.
</para>
</section>
</section>

<section><title><replaceable>name</replaceable>.Endpoints</title>
<section><title>Synopsis</title>
<synopsis>
<replaceable>name</replaceable>.Endpoints=<replaceable>endpoints</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Sets the endpoints for the object adapter <replaceable>name</replaceable> to
<replaceable>endpoints</replaceable>. These endpoints specify the network
interfaces on which the object adapter receives requests. Proxies created
by the object adapter contain these endpoints, unless the
<literal><replaceable>name</replaceable>.PublishedEndpoints</literal>
property is also specified.
</para>
</section>
</section>

<section id="adapter.PublishedEndpoints"><title><replaceable>name</replaceable>.PublishedEndpoints</title>
<section><title>Synopsis</title>
<synopsis>
<replaceable>name</replaceable>.PublishedEndpoints=<replaceable>endpoints</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
When creating a proxy, the object adapter <replaceable>name</replaceable>
normally includes the endpoints defined by
<literal><replaceable>name</replaceable>.Endpoints</literal>. If
<literal><replaceable>name</replaceable>.PublishedEndpoints</literal>
is defined, the object adapter uses these endpoints instead. This is
useful in many situations, such as when a server resides behind a
port-forwarding firewall, in which case the object adapter's public
endpoints must specify the address and port of the firewall.
</para>
</section>
</section>

<section><title><replaceable>name</replaceable>.Locator</title>
<section><title>Synopsis</title>
<synopsis>
<replaceable>name</replaceable>.Locator=<replaceable>locator</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Specifies a locator for the object adapter with the name
<replaceable>name</replaceable>. The value is a stringified proxy
to the &Ice; locator interface.
</para>
</section>
</section>

<section id="adapter.RegisterProcess"><title><replaceable>name</replaceable>.RegisterProcess</title>
<section><title>Synopsis</title>
<synopsis>
<replaceable>name</replaceable>.RegisterProcess=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
If <replaceable>num</replaceable> is set to a value larger than zero,
the object adapter with the name <replaceable>name</replaceable> registers
the server with the locator registry. Registration occurs upon the
object adapter's initial activation, during which the object adapter creates
a servant implementing the <literal>Ice::Process</literal> interface, adds
the servant using a UUID, and registers its proxy with the locator
registry using the value of the <literal>Ice.ServerId</literal> property
for the server id. The servant implements the <literal>shutdown</literal>
operation by invoking <literal>shutdown</literal> on the object adapter's
communicator. </para>
<para> It is important for a server to be registered with the locator 
registry so that services such as &IcePack; can request a graceful shutdown
when necessary. If a server is not registered, then platform-specific
techniques are used to request a shutdown, and these techniques are not
always effective (especially on Windows platforms). </para>
<note><para> Only one object adapter in a server should register with
a locator registry. </para></note>
<note><para> The <literal>Ice::Process</literal> servant represents a
potential target for denial-of-service attacks. The object adapter uses
a UUID to make the proxy more difficult to guess, but the object adapter
should be configured with secure endpoints if the server operates in a
potentially hostile environment. Alternatively, a dedicated object
adapter can be created specifically to provide a restricted access point
for services such as &IcePack;.</para></note>
</section>
</section>

<section><title><replaceable>name</replaceable>.Router</title>
<section><title>Synopsis</title>
<synopsis>
<replaceable>name</replaceable>.Router=<replaceable>router</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Specifies a router for the object adapter with the name
<replaceable>name</replaceable>. The value is a stringified proxy
to the &Ice; router control interface. Defining a router
allows the object adapter to receive callbacks from the router over
outgoing connections from this process to the router, thereby avoiding
the need for the router to establish a connection back to the object
adapter.
<note><para> A router can only be assigned to one object adapter.
Specifying the same router for more than one object adapter results
in undefined behavior. The default value is no router. </para></note>
</para>
</section>
</section>

<section id="adapterThreadpool.Size"><title><replaceable>name</replaceable>.ThreadPool.Size</title>
<section><title>Synopsis</title>
<synopsis>
<replaceable>name</replaceable>.ThreadPool.Size=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
A communicator creates a default server thread pool that dispatches requests
to its object adapters. An object adapter can also be configured with its
own thread pool. This is useful in avoiding deadlocks due to thread starvation
by ensuring that a minimum number of threads is available for dispatching requests
to certain &Ice; objects.
</para>
<para>
<replaceable>num</replaceable> is the initial and also minimum number
of threads in the thread pool. The default value is zero, meaning that
an object adapter by default uses the communicator's server thread pool.
See <link linkend="threadpool.Size">Ice.ThreadPool.Server.Size</link>
for more information.
</para>
</section>
</section>

<section id="adapterThreadpool.SizeMax"><title><replaceable>name</replaceable>.ThreadPool.SizeMax</title>
<section><title>Synopsis</title>
<synopsis>
<replaceable>name</replaceable>.ThreadPool.SizeMax=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
<replaceable>num</replaceable> is the maximum number of threads for
the thread pool. Thread pools in Ice can grow and shrink dynamically,
based on an average load factor. This thread pool will not grow larger
than <replaceable>num</replaceable>, and does not shrink to a number
of threads smaller than the value specified by
<link linkend="adapterThreadpool.Size">
<replaceable>name</replaceable>.ThreadPool.Size</link>.
</para>
<para>
The default value is the value of
<literal><replaceable>name</replaceable>.ThreadPool.Size</literal>, meaning
that by default, this thread pool does not grow dynamically.
</para>
</section>
</section>

<section id="adapterThreadpool.SizeWarn"><title><replaceable>name</replaceable>.ThreadPool.SizeWarn</title>
<section><title>Synopsis</title>
<synopsis>
<replaceable>name</replaceable>.ThreadPool.SizeWarn=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Whenever <replaceable>num</replaceable> threads are active in a thread
pool, a "low on threads" warning is printed. The default value for
is 80% of the value specified by
<literal><replaceable>name</replaceable>.ThreadPool.SizeMax</literal>.
</para>
</section>
</section>

<section id="adapterThreadpool.StackSize"><title><replaceable>name</replaceable>.ThreadPool.StackSize</title>
<section><title>Synopsis</title>
<synopsis>
<replaceable>name</replaceable>.ThreadPool.StackSize=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
<replaceable>num</replaceable> is the stack size (in bytes) of threads in
the thread pool. The default value is zero, meaning the operating system's
default is used.
</para>
</section>
</section>

<section><title>Ice.PrintAdapterReady</title>
<section><title>Synopsis</title>
<synopsis>
Ice.PrintAdapterReady=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
If <replaceable>num</replaceable> is set to a value larger than zero,
an object adapter prints "<replaceable>adapter_name</replaceable>
ready" on standard output after initialization is complete. This is
useful for scripts that need to wait until an object adapter is ready
to be used.
</para>
</section>
</section>

</section>

<!-- ********************************************************************** -->
<section><title>&Ice; Plug-in Properties</title>
<!-- ********************************************************************** -->

<section><title>Ice.Plugin.<replaceable>name</replaceable></title>
<section><title>Synopsis</title>
<synopsis>
Ice.Plugin.<replaceable>name</replaceable>=<replaceable>entry_point [args]</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines a plug-in to be installed during communicator initialization.
</para>
<para>
In C++, <replaceable>entry_point</replaceable> has the form
<literal>basename[,version]:function</literal>. The <literal>basename</literal>
and optional <literal>version</literal> components are used to construct
the name of a DLL or shared library. If no version is supplied, the &Ice; version
is used. The <literal>function</literal> component is the name of a function with
C linkage.
</para>
<para>
For example, the entry point <literal>MyPlugin,2.3:create</literal> would
imply a shared library name of <literal>libMyPlugin.so.2.3</literal>
on Unix and <literal>MyPlugin23.dll</literal> on Windows. Furthermore,
if &Ice; is built on Windows with debugging, a <literal>d</literal> is
automatically appended to the version (e.g., <literal>MyPlugin23d.dll</literal>).
</para>
<para>
In Java, <replaceable>entry_point</replaceable> is the name of a class.
</para>
</section>
</section>

</section>

<!-- ********************************************************************** -->
<section><title>&Ice; Thread Pool Properties</title>
<!-- ********************************************************************** -->

<section id="threadpool.Size"><title>Ice.ThreadPool.Client.Size, Ice.ThreadPool.Server.Size</title>
<section><title>Synopsis</title>
<synopsis>
Ice.ThreadPool.Client.Size=<replaceable>num</replaceable>
Ice.ThreadPool.Server.Size=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
A communicator creates two thread pools: the client thread pool
dispatches AMI callbacks and incoming requests on bidirectional
connections, and the server thread pool dispatches requests to
object adapters. <replaceable>num</replaceable> is the initial
and also minimum number of threads in the thread pool. The
default value is one for both properties.
</para>
<para>
An object adapter can also be configured with its own thread pool.
See the <link linkend="adapterThreadpool.Size">object adapter
properties</link> for more information.
</para>
<note>
<para>
Multiple threads for the client thread pool are only required for nested
AMI invocations. If AMI is not used, or AMI calls are not nested (i.e.,
AMI callbacks do not invoke any other operations on Ice objects), then
there is no need to set the number of threads in the client thread pool
to a value larger than one.
</para>
</note>
</section>
</section>

<section id="threadpool.SizeMax"><title>Ice.ThreadPool.Client.SizeMax, Ice.ThreadPool.Server.SizeMax</title>
<section><title>Synopsis</title>
<synopsis>
Ice.ThreadPool.Client.SizeMax=<replaceable>num</replaceable>
Ice.ThreadPool.Server.SizeMax=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
<replaceable>num</replaceable> is the maximum number of threads for
the thread pool. Thread pools in Ice can grow and shrink dynamically,
based on an average load factor. Thread pools do not grow larger than
the number specified by <literal>SizeMax</literal>, and they do not
shrink to a number of threads smaller than the value specified by
<literal>Size</literal>.
</para>
<para>
The default value for <literal>SizeMax</literal> is the value of
<literal>Size</literal>, meaning that by default, thread pools do not
grow dynamically.
</para>
</section>
</section>

<section id="threadpool.SizeWarn"><title>Ice.ThreadPool.Client.SizeWarn, Ice.ThreadPool.Server.SizeWarn</title>
<section><title>Synopsis</title>
<synopsis>
Ice.ThreadPool.Client.SizeWarn=<replaceable>num</replaceable>
Ice.ThreadPool.Server.SizeWarn=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Whenever <replaceable>num</replaceable> threads are active in a thread
pool, a "low on threads" warning is printed. The default value for
<literal>SizeWarn</literal> is 80% of the value specified by
<literal>SizeMax</literal>.
</para>
</section>
</section>

<section id="threadpool.StackSize"><title>Ice.ThreadPool.Client.StackSize, Ice.ThreadPool.Server.StackSize</title>
<section><title>Synopsis</title>
<synopsis>
Ice.ThreadPool.Client.StackSize=<replaceable>num</replaceable>
Ice.ThreadPool.Server.StackSize=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
<replaceable>num</replaceable> is the stack size (in bytes) of threads in
the thread pool. The default value is zero meaning the operating system's
default is used.
</para>
</section>
</section>


</section>

<!-- ********************************************************************** -->
<section><title>&Ice; Default and Override Properties</title>
<!-- ********************************************************************** -->

<section><title>Ice.Default.Protocol</title>
<section><title>Synopsis</title>
<synopsis>
Ice.Default.Protocol=<replaceable>protocol</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Sets the protocol that is being used if an endpoint uses
<literal>default</literal> as the protocol specification. The
default value is <literal>tcp</literal>.
</para>
</section>
</section>

<section><title>Ice.Default.Host</title>
<section><title>Synopsis</title>
<synopsis>
Ice.Default.Host=<replaceable>host</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
If an endpoint is specified without a host name (i.e., without a
<literal>-h <replaceable>host</replaceable></literal> option), the
<replaceable>host</replaceable> value from this property is used
instead. The default value is the local host name.
</para>
</section>
</section>

<section><title>Ice.Default.Router</title>
<section><title>Synopsis</title>
<synopsis>
Ice.Default.Router=<replaceable>router</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Specifies the default router for all proxies. The value is a
stringified proxy to the &Glacier2; router control interface.
The default router can be overridden on a proxy using the
<literal>ice_router()</literal> operation. The default value
is no router.
</para>
</section>
</section>

<section><title>Ice.Default.Locator</title>
<section><title>Synopsis</title>
<synopsis>
Ice.Default.Locator=<replaceable>locator</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Specifies a default locator for all proxies and object adapters.
The value is a stringified proxy to the &IcePack; locator interface.
The default locator can be overridden on a proxy using the
<literal>ice_locator()</literal> operation. The default value is no
locator.
</para>
<note><para>The &IcePack; locator's object identity is
<literal>IcePack/Locator</literal>. It is listening on the &IcePack;
client endpoints. For example, if
<literal>IcePack.Registry.Client.Endpoints</literal> is set to
<literal>tcp -p 12000 -h localhost</literal>, the stringified proxy
for the &IcePack; locator is <literal>IcePack/Locator:tcp -p
12000 -h localhost</literal>.</para></note>
</section>
</section>

<section><title>Ice.Override.Timeout</title>
<section><title>Synopsis</title>
<synopsis>
Ice.Override.Timeout=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
If set, this property overrides timeout settings in all
endpoints. <replaceable>num</replaceable> is the timeout value in
milliseconds, or -1 for no timeout.
</para>
</section>
</section>

<section><title>Ice.Override.ConnectTimeout</title>
<section><title>Synopsis</title>
<synopsis>
Ice.Override.ConnectTimeout=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
This property overrides timeout settings used to establish
connections.  <replaceable>num</replaceable> is the timeout value in
milliseconds, or -1 for no timeout. If this property is not set, then
<literal>Ice.Override.Timeout</literal> is used.
</para>
</section>
</section>

<section><title>Ice.Override.Compress</title>
<section><title>Synopsis</title>
<synopsis>
Ice.Override.Compress=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
If set, this property overrides compression settings in all
proxies. If <replaceable>num</replaceable> is set to a value larger
than zero, compression is enabled. If zero, compression is disabled.
</para>
<para>
The setting of this property is ignored in the server role.
</para>
<para>
Note that, if a client sets <literal>Ice.Override.Compress=1</literal>
and the server does not support compression (as for Java), requests will fail due to
marshaling errors.
</para>
<para>
If a Java client sets <literal>Ice.Override.Compress=1</literal>, the setting
is ignored with a warning message on <literal>stderr</literal>.
</para>
<para>Regardless of the setting of this property, requests smaller than 100
bytes are never compressed.
</para>
</section>
</section>

</section>

<!-- ********************************************************************** -->
<section><title>&Ice; Miscellaneous Properties</title>
<!-- ********************************************************************** -->

<section><title>Ice.GC.Interval</title>
<section><title>Synopsis</title>
<synopsis>
Ice.GC.Interval=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
This property determines the frequency with which the class garbage
collector runs. If the interval is set to zero (the default), no
collector thread is created. Otherwise, the collector thread runs
every <replaceable>num</replaceable> seconds.
</para>
</section>
</section>

<section><title>Ice.RetryIntervals</title>
<section><title>Synopsis</title>
<synopsis>
Ice.RetryIntervals=<replaceable>num [num ...]</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
This property defines the number of times an operation is re-tried and
the delay between each retry. For example, if the property is set to
<replaceable>0 100 500</replaceable>, the operation is re-tried 3
times: immediately upon the first failure, again after waiting 100
(ms) upon the second failure, and again after waiting 500 (ms) upon the third
failure. The default value is to retry once immediately (0). If set to
-1, no retry occurs.
</para>
</section>
</section>

<section><title>Ice.MessageSizeMax</title>
<section><title>Synopsis</title>
<synopsis>
Ice.MessageSizeMax=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
This property controls the maximum size (in kilobytes) of a protocol
message that is accepted or sent by the &Ice; run time.
The size includes the size of the Ice protocol header. Messages larger
than this size cause a [MemoryLimitException].
The default size is 1024 (1 Megabyte).
Settings with a value less than 1 are ignored.
</para>
<para>
This property adjusts the value of <literal>Ice.UDP.RcvSize</literal> and <literal>Ice.UDP.SndSize</literal>, that
is, if <literal>Ice.UDP.RcvSize</literal> or <literal>Ice.UDP.SndSize</literal> are larger than
<literal>Ice.MessageSizeMax * 1024 + 28</literal>, they are adjusted to
<literal>Ice.MessageSizeMax * 1024 + 28</literal>.
</para>
</section>
</section>

<section><title>Ice.ChangeUser</title>
<section><title>Synopsis</title>
<synopsis>
Ice.ChangeUser=<replaceable>user</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
If set, &Ice; changes the user and group id to the respective ids
of <replaceable>user</replaceable> in
<literal>/etc/passwd</literal>. This only works if the &Ice;
application is executed by the super-user. (Unix only.)
</para>
</section>
</section>

<section id="acm.client"><title>Ice.ACM.Client</title>
<section><title>Synopsis</title>
<synopsis>
Ice.ACM.Client=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
If <replaceable>num</replaceable> is set to a value larger than zero,
client-side Active Connection Management (ACM) is enabled. This means
that connections are automatically closed by the client after they have
been idle for <replaceable>num</replaceable> seconds. This is
transparent to applications because connections closed by ACM are
automatically reestablished if they are needed again. The default value
is 60, meaning that idle connections are automatically closed after one
minute.
</para>
</section>
</section>

<section id="acm.server"><title>Ice.ACM.Server</title>
<section><title>Synopsis</title>
<synopsis>
Ice.ACM.Server=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
This property is the server-side equivalent of
<link linkend="acm.client">Ice.ACM.Client</link>.
If <replaceable>num</replaceable> is set to a value larger than zero,
server-side Active Connection Management (ACM) is enabled, in which
the server automatically closes an incoming connection after it has
been idle for <replaceable>num</replaceable> seconds. The
default value is 0, meaning that server-side ACM is disabled
by default.
</para>
<note>
<para>
Server-side ACM can cause incoming oneway requests to be
silently discarded. See the Ice manual for more information.
</para>
</note>
</section>
</section>

<section><title>Ice.ConnectionIdleTime</title>
<section><title>Synopsis</title>
<synopsis>
Ice.ConnectionIdleTime=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
This property is deprecated, and available for backwards-compatibility
only. If the property is defined (i.e., set to a non-empty string), it
sets both client- and server-side ACM timeouts. The properties
<link linkend="acm.client">Ice.ACM.Client</link> and
<link linkend="acm.server">Ice.ACM.Server</link> override this value
for the client- and server-side ACM timeouts, respectively.
</para>
</section>
</section>

<section><title>Ice.MonitorConnections</title>
<section><title>Synopsis</title>
<synopsis>
Ice.MonitorConnections=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
If <replaceable>num</replaceable> is set to a value larger than zero,
&Ice; starts a thread that monitors connections. This thread is
responsible for shutting down idle connections and enforcing
AMI timeouts. The default value is the smaller of
<literal>Ice.ACM.Client</literal> or <literal>Ice.ACM.Server</literal>.
If neither property is specified or has a non-zero value, the monitoring
thread is disabled.
</para>
</section>
</section>

<section><title>Ice.PrintProcessId</title>
<section><title>Synopsis</title>
<synopsis>
Ice.PrintProcessId=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
If <replaceable>num</replaceable> is set to a value larger than zero,
the process ID is printed on standard output upon startup.
</para>
</section>
</section>

<section><title>Ice.ProgramName</title>
<section><title>Synopsis</title>
<synopsis>
Ice.ProgramName=<replaceable>name</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
<replaceable>name</replaceable> is the program name, which is set
automatically from <literal>argv[0]</literal> (C++) and from
<literal>AppDomain.CurrentDomain.FriendlyName</literal> (C#) during
initialization. (For Java, <literal>Ice.ProgramName</literal> is
initialized to the empty string.)  For all languages, the default name
can be overridden by setting this property.
</para>
</section>
</section>

<section><title>Ice.ServerId</title>
<section><title>Synopsis</title>
<synopsis>
Ice.ServerId=<replaceable>id</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
The value <replaceable>id</replaceable> is used as the server id when
an object adapter registers the server with the locator registry.
Refer to the description of the object adapter property <link
linkend="adapter.RegisterProcess"><replaceable>adapter</replaceable>.RegisterProcess</link>
for more information.
</para>
</section>
</section>

<section><title>Ice.ServerIdleTime</title>
<section><title>Synopsis</title>
<synopsis>
Ice.ServerIdleTime=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
If <replaceable>num</replaceable> is set to a value larger than zero,
&Ice; automatically calls
<literal>Communicator::shutdown</literal> once the Communicator has
been idle for <replaceable>num</replaceable> seconds. This shuts
down the Communicator's server side and causes all threads waiting in
<literal>Communicator::waitForShutdown</literal> to return. After
that, a server will typically do some cleanup work before exiting. The
default value is zero, meaning that the server will not shut down
automatically.
</para>
</section>
</section>


<section><title>Ice.StdErr</title>
<section><title>Synopsis</title>
<synopsis>
Ice.StdErr=<replaceable>filename</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
If <replaceable>filename</replaceable> is not empty, the standard
error stream of this process is redirected to this file, in
append mode. This property is checked only for the first
Communicator created in a given process.
</para>
</section>
</section>

<section><title>Ice.StdOut</title>
<section><title>Synopsis</title>
<synopsis>
Ice.StdOut=<replaceable>filename</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
If <replaceable>filename</replaceable> is not empty, the standard
output stream of this process is redirected to this file, in
append mode. This property is checked only for the first
Communicator created in a given process.
</para>
</section>
</section>

<section><title>Ice.UseEventLog</title>
<section><title>Synopsis</title>
<synopsis>
Ice.UseEventLog=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
If <replaceable>num</replaceable> is set to a value larger than zero,
a special logger is installed that logs to the Windows Event Log
instead of standard error. The event source name is the
value of <literal>Ice.ProgramName</literal>. (Windows 2000/XP only.)
</para>
</section>
</section>

<section><title>Ice.UseSyslog</title>
<section><title>Synopsis</title>
<synopsis>
Ice.UseSyslog=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
If <replaceable>num</replaceable> is set to a value larger than zero,
a special logger is installed that logs to the syslog facility
instead of standard error. The identifier for syslog is the
value of <literal>Ice.ProgramName</literal>. (Unix only.)
</para>
</section>
</section>

<section><title>Ice.Logger.Timestamp</title>
<section><title>Synopsis</title>
<synopsis>
Ice.Logger.Timestamp=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
If <replaceable>num</replaceable> is set to a value larger than zero,
the output of the default logger includes timestamps.
</para>
</section>
</section>

<section><title>Ice.NullHandleAbort</title>
<section><title>Synopsis</title>
<synopsis>
Ice.NullHandleAbort=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
If <replaceable>num</replaceable> is set to a value larger than zero,
invoking an operation using a null smart pointer (i.e., a handle)
causes the program to abort immediately instead of raising
<literal>IceUtil::NullHandleException</literal>. (C++ only.)
</para>
</section>
</section>

<section><title>Ice.Nohup</title>
<section><title>Synopsis</title>
<synopsis>
Ice.Nohup=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
If <replaceable>num</replaceable> is set to a value larger than zero,
the C++ classes <literal>Ice::Application</literal> and
<literal>Ice::Service</literal> ignore <literal>SIGHUP</literal>
(for UNIX) and <literal>CTRL_LOGOFF_EVENT</literal> (for Windows). As a
result, an application that sets <literal>Ice.Nohup</literal> continues
to run if the user that started the application logs off. The default
value for <literal>Ice::Application</literal> is <literal>0</literal>,
and the default value for <literal>Ice::Service</literal> is
<literal>1</literal> (C++ only.)
</para>
</section>
</section>

<section><title>Ice.UDP.RcvSize, Ice.UDP.SndSize</title>
<section><title>Synopsis</title>
<synopsis>
Ice.UDP.RcvSize=<replaceable>num</replaceable>
Ice.UDP.SndSize=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
These properties set the UDP receive and send buffer sizes to the
specified value in bytes. Ice messages larger than
<literal><replaceable>num</replaceable> - 28</literal> bytes cause a
<literal>DatagramLimitException</literal>. The default value depends
on the configuration of the local UDP stack. (Common default values
are <literal>65535</literal> and <literal>8192</literal> bytes.)
</para>
<para>
The OS may impose lower and upper limits on the receive and send
buffer sizes or otherwise adjust the buffer sizes.  If a limit is
requested that is lower than the OS-imposed minimum, the value is
silently adjusted to the OS-imposed minimum. If a limit is requested
that is larger than the OS-imposed maximum, the value is adjusted to
the OS-imposed maximum; in addition, &Ice; logs a warning showing the
requested size and the adjusted size.
</para>
<para>
Settings of these properties less than <literal>28</literal> are ignored.
</para>
<para>
Note that, on many operating systems, it is possible to set buffer
sizes greater than <literal>65535</literal>.  Such settings do not
change the hard limit of <literal>65507</literal> bytes for the
payload of a UDP packet, but merely affect how much data can be
buffered by the kernel.
</para>
<para>
Settings less than <literal>65535</literal> limit the size of &Ice;
datagrams as well as adjust the kernel buffer sizes.
</para>
<para>
If <literal>Ice.MessageSizeMax</literal> is set and
<literal>Ice.MessageSizeMax * 1024 + 28</literal> is smaller than the
UDP receive or send buffer size, the corresponding UDP buffer size is
reduced to <literal>Ice.MessageSizeMax * 1024 + 28</literal>.
</para>
</section>
</section>

<section><title>Ice.Package.<replaceable>module</replaceable></title>
<section><title>Synopsis</title>
<synopsis>
Ice.Package.<replaceable>module</replaceable>=<replaceable>package</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Associates a top-level Slice module with a Java package. If global
metadata is used to enclose generated Java classes in a user-defined
package, the Ice run time must be configured in order to successfully
unmarshal exceptions and concrete class types. If all top-level
modules are generated into the same user-defined package, it is easier
to use <literal>Ice.Default.Package</literal> instead.
</para>
</section>
</section>

<section><title>Ice.Default.Package</title>
<section><title>Synopsis</title>
<synopsis>
Ice.Default.Package=<replaceable>package</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Specifies a default package to use if other attempts by the Ice run time to
dynamically load a generated class have failed. If global metadata is used to
enclose generated Java classes in a user-defined package, the Ice run time must
be configured in order to successfully unmarshal exceptions and concrete class
types. Also see Ice.Package.<replaceable>module</replaceable>.
</para>
</section>
</section>

</section>

<!-- ********************************************************************** -->
<section><title>&IceSSL; Properties</title>
<!-- ********************************************************************** -->

<section><title>IceSSL.Trace.Security</title>
<section><title>Synopsis</title>
<synopsis>
IceSSL.Trace.Security=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
The SSL plug-in trace level:
<informaltable>
<tgroup cols=2>
<tbody>
<row>
<entry>0</entry>
<entry>No security trace. (default)</entry>
</row>
<row>
<entry>1</entry>
<entry>Trace security warnings (C++), and display the list of selected ciphersuites (Java).</entry>
</row>
<row>
<entry>2</entry>
<entry>Like 1, but more verbose, including warnings during
configuration file parsing (C++).
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</section>
</section>

<section><title>IceSSL.Client.CertPath, IceSSL.Server.CertPath</title>
<section><title>Synopsis</title>
<synopsis>
IceSSL.Client.CertPath=<replaceable>path</replaceable>
IceSSL.Server.CertPath=<replaceable>path</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the path (relative or absolute) where the SSL plug-in can
find PEM format certificate files (RSA and DSA) and Diffie-Hellman group
parameter files. (C++ only)
</para>
<para>
If <literal>IceSSL.Client.Config</literal> or
<literal>IceSSL.Server.Config</literal> specify a relative path, that path
is relative to the value of <literal>IceSSL.Client.CertPath</literal>
and <literal>IceSSL.Server.CertPath</literal>, respectively.
</para>
<para>
If not specified, the application uses the current working directory
as the certificate path.
</para>
</section>
</section>

<section><title>IceSSL.Client.Config, IceSSL.Server.Config</title>
<section><title>Synopsis</title>
<synopsis>
IceSSL.Client.Config=<replaceable>config_file</replaceable>
IceSSL.Server.Config=<replaceable>config_file</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the XML-based configuration file from which the SSL plug-in
loads initialization information and certificates. (C++ only)
</para>
<para>
If the property specifies a relative path, the path is interpreted
relative to the certificate path defined by <literal>IceSSL.Client.CertPath</literal>
and <literal>IceSSL.Server.CertPath</literal>, respectively.
</para>
<para>
The XML parser looks for the DTD file in the same directory in which
it finds the XML configuration file.
</para>
<para>
Depending on whether the application is running in client mode, server mode or
both modes, a valid value for one or both of these parameters must be specified
for the proper operation of the &IceSSL; plug-in.
</para>
</section>
</section>

<section><title>IceSSL.Client.Handshake.Retries</title>
<section><title>Synopsis</title>
<synopsis>
IceSSL.Client.Handshake.Retries=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
IceSSL clients attempt to perform an entire SSL handshake in the connection
phase. When attempting this handshake, it is possible for the client to
time out while waiting for a response from the server. This property specifies
the number of handshake retries the client attempts before throwing a
<literal>Ice::ConnectionFailedException</literal>. (C++ only)
</para>
<para>
If not specified, the default value for this property is 10 retries.
</para>
</section>
</section>

<section><title>IceSSL.Client.Passphrase.Retries, IceSSL.Server.Passphrase.Retries</title>
<section><title>Synopsis</title>
<synopsis>
IceSSL.Client.Passphrase.Retries=<replaceable>num</replaceable>
IceSSL.Server.Passphrase.Retries=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
When &IceSSL; is directed to use a private key in a PEM file that has
been encrypted, a prompt is displayed <literal>Enter PEM pass
phrase:</literal>. If the passphrase is entered incorrectly, these
properties determine how many retries the user is allowed before
&IceSSL; shuts down. (C++ only)
</para>
<para>
If not specified, the default value for these properties is 5 retries.
</para>
</section>
</section>

<section><title>IceSSL.Server.Overrides.RSA.PrivateKey, IceSSL.Server.Overrides.RSA.Certificate</title>
<section><title>Synopsis</title>
<synopsis>
IceSSL.Server.Overrides.RSA.PrivateKey=<replaceable>Base64 encoded DER string</replaceable>
IceSSL.Server.Overrides.RSA.Certificate=<replaceable>Base64 encoded DER string</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
These properties override the RSA private key and public key (certificate)
specified in the config file (<literal>IceSSL.Server.Config</literal>) for
the Server context. The value must be the DER representation of the private
and public keys, base64 encoded. (C++ only)
</para>
<para>
There are no default values for these properties.
</para>
</section>
</section>

<section><title>IceSSL.Server.Overrides.DSA.PrivateKey, IceSSL.Server.Overrides.DSA.Certificate</title>
<section><title>Synopsis</title>
<synopsis>
IceSSL.Server.Overrides.DSA.PrivateKey=<replaceable>Base64 encoded DER string</replaceable>
IceSSL.Server.Overrides.DSA.Certificate=<replaceable>Base64 encoded DER string</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
These properties override the DSA private key and public key (certificate)
specified in the config file (<literal>IceSSL.Server.Config</literal>) for
the Server context. The value must be the DER representation of the private
and public keys, base64 encoded. (C++ only)
</para>
<para>
There are no default values for these properties.
</para>
</section>
</section>

<section><title>IceSSL.Client.Overrides.RSA.PrivateKey, IceSSL.Client.Overrides.RSA.Certificate</title>
<section><title>Synopsis</title>
<synopsis>
IceSSL.Client.Overrides.RSA.PrivateKey=<replaceable>Base64 encoded DER string</replaceable>
IceSSL.Client.Overrides.RSA.Certificate=<replaceable>Base64 encoded DER string</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
These properties override the RSA private key and public key (certificate)
specified in the config file (<literal>IceSSL.Client.Config</literal>) for
the Client context. The value must be the DER representation of the private
and public keys, base64 encoded. (C++ only)
</para>
<para>
There are no default values for these properties.
</para>
</section>
</section>

<section><title>IceSSL.Client.Overrides.DSA.PrivateKey, IceSSL.Client.Overrides.DSA.Certificate</title>
<section><title>Synopsis</title>
<synopsis>
IceSSL.Client.Overrides.DSA.PrivateKey=<replaceable>Base64 encoded DER string</replaceable>
IceSSL.Client.Overrides.DSA.Certificate=<replaceable>Base64 encoded DER string</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
These properties override the DSA private key and public key (certificate)
specified in the config file (<literal>IceSSL.Client.Config</literal>) for
the Client context. The value must be the DER representation of the private
and public keys, base64 encoded. (C++ only)
</para>
<para>
There are no default values for these properties.
</para>
</section>
</section>

<section><title>IceSSL.Client.Overrides.CACertificate, IceSSL.Server.Overrides.CACertificate</title>
<section><title>Synopsis</title>
<synopsis>
IceSSL.Client.Overrides.CACertificate=<replaceable>Base64 encoded DER string</replaceable>
IceSSL.Server.Overrides.CACertificate=<replaceable>Base64 encoded DER string</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
These properties override any trusted Certificate Authority (CA) certificates
specified in <literal>IceSSL.Server.Config</literal> or
<literal>IceSSL.Client.Config</literal>. The new certificate is represented
as the base64 encoding of the DER binary representation of the certificate. (C++ only)
</para>
<para>
There are no default values for these properties.
</para>
</section>
</section>

<section><title>IceSSL.Client.IgnoreValidPeriod, IceSSL.Server.IgnoreValidPeriod</title>
<section><title>Synopsis</title>
<synopsis>
IceSSL.Client.IgnoreValidPeriod=<replaceable>num</replaceable>
IceSSL.Server.IgnoreValidPeriod=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
If set to 1, these properties cause the default certificate verifier to ignore the
certificate validity period on peer certificates. The default value for these
properties is 0, meaning that the certificate validity period is not ignored. (C++ only)
</para>
</section>
</section>

<section><title>IceSSL.Client.Certs, IceSSL.Server.Certs</title>
<section><title>Synopsis</title>
<synopsis>
IceSSL.Client.Certs=<replaceable>keystore</replaceable>
IceSSL.Server.Certs=<replaceable>keystore</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the filename of a Java keystore containing trusted certificates.
If <replaceable>keystore</replaceable> is a relative pathname, it is
relative to the program's current working directory.
</para>
<para>
If a password is provided in <literal>IceSSL.Client.CertsPassword</literal>
or <literal>IceSSL.Server.CertsPassword</literal>, it is used to verify the
integrity of the keystore.
</para>
<para>
If not specified, the plug-in uses an empty keystore.
</para>
</section>
</section>

<section><title>IceSSL.Client.CertsPassword, IceSSL.Server.CertsPassword</title>
<section><title>Synopsis</title>
<synopsis>
IceSSL.Client.CertsPassword=<replaceable>password</replaceable>
IceSSL.Server.CertsPassword=<replaceable>password</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the password used to verify the integrity of the Java keystore provided
by <literal>IceSSL.Client.Certs</literal> or <literal>IceSSL.Server.Certs</literal>.
</para>
<para>
If not specified, the plug-in does not verify the keystore's integrity.
</para>
</section>
</section>

<section><title>IceSSL.Client.Ciphers, IceSSL.Server.Ciphers</title>
<section><title>Synopsis</title>
<synopsis>
IceSSL.Client.Ciphers=<replaceable>cipher-list</replaceable>
IceSSL.Server.Ciphers=<replaceable>cipher-list</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the ciphersuites enabled by the Java plug-in.
</para>
<para>
The property value is interpreted as a list of tokens delimited by whitespace.
The plug-in executes the tokens in the order of appearance in order to assemble
the list of enabled ciphersuites. The table below describes the tokens:
<informaltable>
<tgroup cols=2>
<tbody>
<row>
<entry><literal>NONE</literal></entry>
<entry>
Disables all ciphersuites. If specified, it must be the first token in the list.
</entry>
</row>
<row>
<entry><literal>ALL</literal></entry>
<entry>
Enables all supported ciphersuites. If specified, it must be the first token
in the list. This token should be used with caution, as it may enable low-security
ciphersuites.
</entry>
</row>
<row>
<entry><literal><replaceable>NAME</replaceable></literal></entry>
<entry>Enables the ciphersuite matching the given name.</entry>
</row>
<row>
<entry><literal>!<replaceable>NAME</replaceable></literal></entry>
<entry>Disables the ciphersuite matching the given name.</entry>
</row>
<row>
<entry><literal>(<replaceable>EXP</replaceable>)</literal></entry>
<entry>Enables ciphersuites whose names contain the regular expression
<replaceable>EXP</replaceable>.</entry>
</row>
<row>
<entry><literal>!(<replaceable>EXP</replaceable>)</literal></entry>
<entry>Disables ciphersuites whose names contain the regular expression
<replaceable>EXP</replaceable>.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
<para>
If not specified, the plug-in uses the security provider's default ciphersuites.
</para>
</section>
</section>

<section><title>IceSSL.Client.Keystore, IceSSL.Server.Keystore</title>
<section><title>Synopsis</title>
<synopsis>
IceSSL.Client.Keystore=<replaceable>keystore</replaceable>
IceSSL.Server.Keystore=<replaceable>keystore</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the filename of a Java keystore containing the private key(s)
and corresponding certificate(s). If <replaceable>keystore</replaceable>
is a relative pathname, it is relative to the program's current working
directory.
</para>
<para>
A password for the private key is defined by <literal>IceSSL.Client.Password</literal>
or <literal>IceSSL.Server.Password</literal>. A password used to verify
the integrity of the keystore is defined by <literal>IceSSL.Client.KeystorePassword</literal>
or <literal>IceSSL.Server.KeystorePassword</literal>.
</para>
<para>
If not specified, the plug-in uses an empty keystore.
</para>
</section>
</section>

<section><title>IceSSL.Client.KeystorePassword, IceSSL.Server.KeystorePassword</title>
<section><title>Synopsis</title>
<synopsis>
IceSSL.Client.KeystorePassword=<replaceable>password</replaceable>
IceSSL.Server.KeystorePassword=<replaceable>password</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the password used to verify the integrity of the Java keystore provided
by <literal>IceSSL.Client.Keystore</literal> or <literal>IceSSL.Server.Keystore</literal>.
</para>
<para>
If not specified, the plug-in does not verify the keystore's integrity.
</para>
</section>
</section>

<section><title>IceSSL.Client.Password, IceSSL.Server.Password</title>
<section><title>Synopsis</title>
<synopsis>
IceSSL.Client.Password=<replaceable>password</replaceable>
IceSSL.Server.Password=<replaceable>password</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the password of the private key in the Java keystore specified
by <literal>IceSSL.Client.Keystore</literal> or <literal>IceSSL.Server.Keystore</literal>.
</para>
<note><para> All of the keys in the keystore must use the same password. </para></note>
<para>
If not specified, the plug-in uses an empty string.
</para>
</section>
</section>

<section><title>IceSSL.Server.ClientAuth</title>
<section><title>Synopsis</title>
<synopsis>
IceSSL.Server.ClientAuth=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines how a Java server authenticates a client:
<informaltable>
<tgroup cols=2>
<tbody>
<row>
<entry>0</entry>
<entry>No certificate is requested from the client. (default)</entry>
</row>
<row>
<entry>1</entry>
<entry>A certificate is requested but is not required.</entry>
</row>
<row>
<entry>2</entry>
<entry>A certificate is required.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</section>
</section>

</section>

<!-- ********************************************************************** -->
<section><title>&IceBox; Properties</title>
<!-- ********************************************************************** -->

<section><title>IceBox.ServiceManager.AdapterId</title>
<section><title>Synopsis</title>
<synopsis>
IceBox.ServiceManager.AdapterId=<replaceable>id</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the value of the property
<link linkend="adapter.AdapterId"><replaceable>adapter</replaceable>.AdapterId</link>
for the object adapter named <literal>IceBox.ServiceManager</literal>.
</para>
</section>
</section>

<section><title>IceBox.ServiceManager.Endpoints</title>
<section><title>Synopsis</title>
<synopsis>
IceBox.ServiceManager.Endpoints=<replaceable>endpoints</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the endpoints of the &IceBox; service manager interface. The
service manager endpoints must be accessible to the &IceBox;
administration tool to shutdown the &IceBox; server.
</para>
</section>
</section>

<section><title>IceBox.ServiceManager.PublishedEndpoints</title>
<section><title>Synopsis</title>
<synopsis>
IceBox.ServiceManager.PublishedEndpoints=<replaceable>endpoints</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the published endpoints of the &IceBox; service manager interface. The
service manager endpoints must be accessible to the &IceBox;
administration tool to shutdown the &IceBox; server.
Refer to the description of the object adapter property
<link linkend="adapter.PublishedEndpoints"><replaceable>adapter</replaceable>.PublishedEndpoints</link>
for more information.
</para>
</section>
</section>

<section><title>IceBox.ServiceManager.Identity</title>
<section><title>Synopsis</title>
<synopsis>
IceBox.ServiceManager.Identity=<replaceable>identity</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
The identity of the service manager interface. If not specified the
default value <literal>ServiceManager</literal> is used.
</para>
</section>
</section>

<section><title>IceBox.ServiceManager.RegisterProcess</title>
<section><title>Synopsis</title>
<synopsis>
IceBox.ServiceManager.RegisterProcess=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the value of the property
<link linkend="adapter.RegisterProcess"><replaceable>adapter</replaceable>.RegisterProcess</link>
for the object adapter named <literal>IceBox.ServiceManager</literal>.
</para>
</section>
</section>

<section><title>IceBox.ServiceManager.ThreadPool.Size</title>
<section><title>Synopsis</title>
<synopsis>
IceBox.ServiceManager.ThreadPool.Size=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the value of the property
<link linkend="adapterThreadpool.Size"><replaceable>adapter</replaceable>.ThreadPool.Size</link>
for the object adapter named <literal>IceBox.ServiceManager</literal>.
</para>
</section>
</section>

<section><title>IceBox.ServiceManager.ThreadPool.SizeMax</title>
<section><title>Synopsis</title>
<synopsis>
IceBox.ServiceManager.ThreadPool.SizeMax=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the value of the property
<link linkend="adapterThreadpool.SizeMax"><replaceable>adapter</replaceable>.ThreadPool.SizeMax</link>
for the object adapter named <literal>IceBox.ServiceManager</literal>.
</para>
</section>
</section>

<section><title>IceBox.ServiceManager.ThreadPool.SizeWarn</title>
<section><title>Synopsis</title>
<synopsis>
IceBox.ServiceManager.ThreadPool.SizeWarn=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the value of the property
<link linkend="adapterThreadpool.SizeWarn"><replaceable>adapter</replaceable>.ThreadPool.SizeWarn</link>
for the object adapter named <literal>IceBox.ServiceManager</literal>.
</para>
</section>
</section>

<section><title>IceBox.LoadOrder</title>
<section><title>Synopsis</title>
<synopsis>
IceBox.LoadOrder=<replaceable>names</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Determines the order in which services are loaded. The service manager
loads the services in the order they appear in
<replaceable>names</replaceable>, where each service name is separated
by a comma or whitespace. Any services not mentioned in
<replaceable>names</replaceable> are loaded afterward, in an undefined
order.
</para>
</section>
</section>

<section><title>IceBox.PrintServicesReady</title>
<section><title>Synopsis</title>
<synopsis>
IceBox.PrintServicesReady=<replaceable>token</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
If this property is set to a value greater than zero, the service
manager prints "<replaceable>token</replaceable> ready"
on standard output once initialization of all the services is
complete. This is useful for scripts that wish to wait until all services
are ready to be used.
</para>
</section>
</section>

<section><title>IceBox.Service.<replaceable>name</replaceable></title>
<section><title>Synopsis</title>
<synopsis>
IceBox.Service.<replaceable>name</replaceable>=<replaceable>entry_point [args]</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines a service to be loaded during &IceBox; initialization.
</para>
<para>
In C++, <replaceable>entry_point</replaceable> has the form
<literal>library:symbol</literal>. The <literal>library</literal>
component is the name of a shared library or DLL. The
<literal>symbol</literal> component is the name of a factory
function used to create the service.
</para>
<para>
In Java, <replaceable>entry_point</replaceable> is the name of the
service implementation class.
</para>
</section>
</section>

<section><title>IceBox.UseSharedCommunicator.<replaceable>name</replaceable></title>
<section><title>Synopsis</title>
<synopsis>
IceBox.UseSharedCommunicator.<replaceable>name</replaceable>=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
If <replaceable>num</replaceable> is set to a value larger than zero,
the service manager supplies the service with the name
<replaceable>name</replaceable> of a communicator that might be shared by
other services.
</para>
</section>
</section>

</section>

<!-- ********************************************************************** -->
<section><title>&IcePack; Properties</title>
<!-- ********************************************************************** -->

<section><title>IcePack.Registry.Client.Endpoints</title>
<section><title>Synopsis</title>
<synopsis>
IcePack.Registry.Client.Endpoints=<replaceable>endpoints</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the endpoints of the &IcePack; client interface. The client
endpoints must be accessible to &Ice; clients that are using &IcePack;
to locate objects (see <literal>Ice.Default.Locator</literal>).
</para>
</section>
</section>

<section><title>IcePack.Registry.Client.PublishedEndpoints</title>
<section><title>Synopsis</title>
<synopsis>
IcePack.Registry.Client.PublishedEndpoints=<replaceable>endpoints</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the published endpoints of the &IcePack; client interface. The client
endpoints must be accessible to &Ice; clients that are using &IcePack;
to locate objects (see <literal>Ice.Default.Locator</literal>).
Refer to the description of the object adapter property
<link linkend="adapter.PublishedEndpoints"><replaceable>adapter</replaceable>.PublishedEndpoints</link>
for more information.
</para>
</section>
</section>

<section><title>IcePack.Registry.Client.ThreadPool.Size</title>
<section><title>Synopsis</title>
<synopsis>
IcePack.Registry.Client.ThreadPool.Size=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the value of the property
<link linkend="adapterThreadpool.Size"><replaceable>adapter</replaceable>.ThreadPool.Size</link>
for the object adapter named <literal>IcePack.Registry.Client</literal>.
</para>
</section>
</section>

<section><title>IcePack.Registry.Client.ThreadPool.SizeMax</title>
<section><title>Synopsis</title>
<synopsis>
IcePack.Registry.Client.ThreadPool.SizeMax=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the value of the property
<link linkend="adapterThreadpool.SizeMax"><replaceable>adapter</replaceable>.ThreadPool.SizeMax</link>
for the object adapter named <literal>IcePack.Registry.Client</literal>.
</para>
</section>
</section>

<section><title>IcePack.Registry.Client.ThreadPool.SizeWarn</title>
<section><title>Synopsis</title>
<synopsis>
IcePack.Registry.Client.ThreadPool.SizeWarn=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the value of the property
<link linkend="adapterThreadpool.SizeWarn"><replaceable>adapter</replaceable>.ThreadPool.SizeWarn</link>
for the object adapter named <literal>IcePack.Registry.Client</literal>.
</para>
</section>
</section>

<section><title>IcePack.Registry.Server.Endpoints</title>
<section><title>Synopsis</title>
<synopsis>
IcePack.Registry.Server.Endpoints=<replaceable>endpoints</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the endpoints of the &IcePack; server interface. The server
endpoints must be accessible to &Ice; servers that are using &IcePack;
to register their object adapter endpoints.
</para>
</section>
</section>

<section><title>IcePack.Registry.Server.PublishedEndpoints</title>
<section><title>Synopsis</title>
<synopsis>
IcePack.Registry.Server.PublishedEndpoints=<replaceable>endpoints</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the published endpoints of the &IcePack; server interface. The server
endpoints must be accessible to &Ice; servers that are using &IcePack;
to register their object adapter endpoints.
Refer to the description of the object adapter property
<link linkend="adapter.PublishedEndpoints"><replaceable>adapter</replaceable>.PublishedEndpoints</link>
for more information.
</para>
</section>
</section>

<section><title>IcePack.Registry.Server.ThreadPool.Size</title>
<section><title>Synopsis</title>
<synopsis>
IcePack.Registry.Server.ThreadPool.Size=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the value of the property
<link linkend="adapterThreadpool.Size"><replaceable>adapter</replaceable>.ThreadPool.Size</link>
for the object adapter named <literal>IcePack.Registry.Server</literal>.
</para>
</section>
</section>

<section><title>IcePack.Registry.Server.ThreadPool.SizeMax</title>
<section><title>Synopsis</title>
<synopsis>
IcePack.Registry.Server.ThreadPool.SizeMax=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the value of the property
<link linkend="adapterThreadpool.SizeMax"><replaceable>adapter</replaceable>.ThreadPool.SizeMax</link>
for the object adapter named <literal>IcePack.Registry.Server</literal>.
</para>
</section>
</section>

<section><title>IcePack.Registry.Server.ThreadPool.SizeWarn</title>
<section><title>Synopsis</title>
<synopsis>
IcePack.Registry.Server.ThreadPool.SizeWarn=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the value of the property
<link linkend="adapterThreadpool.SizeWarn"><replaceable>adapter</replaceable>.ThreadPool.SizeWarn</link>
for the object adapter named <literal>IcePack.Registry.Server</literal>.
</para>
</section>
</section>

<section><title>IcePack.Registry.Admin.Endpoints</title>
<section><title>Synopsis</title>
<synopsis>
IcePack.Registry.Admin.Endpoints=<replaceable>endpoints</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the optional administrative endpoints of the &IcePack; admin
interface. The administrative endpoints must be accessible to clients
which are using the &IcePack; administrative interface, such as the
&IcePack; administrative tool.
</para>
<note><para>Allowing access to the &IcePack; admin interface is a
security risk! If this property is not defined, the admin interface
is disabled.</para></note>
</section>
</section>

<section><title>IcePack.Registry.Admin.PublishedEndpoints</title>
<section><title>Synopsis</title>
<synopsis>
IcePack.Registry.Admin.PublishedEndpoints=<replaceable>endpoints</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the optional administrative published endpoints of the &IcePack; admin
interface. The administrative endpoints must be accessible to clients
which are using the &IcePack; administrative interface, such as the
&IcePack; administrative tool.
Refer to the description of the object adapter property
<link linkend="adapter.PublishedEndpoints"><replaceable>adapter</replaceable>.PublishedEndpoints</link>
for more information.
</para>
<note><para>Allowing access to the &IcePack; admin interface is a
security risk!</para></note>
</section>
</section>

<section><title>IcePack.Registry.Admin.ThreadPool.Size</title>
<section><title>Synopsis</title>
<synopsis>
IcePack.Registry.Admin.ThreadPool.Size=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the value of the property
<link linkend="adapterThreadpool.Size"><replaceable>adapter</replaceable>.ThreadPool.Size</link>
for the object adapter named <literal>IcePack.Registry.Admin</literal>.
</para>
</section>
</section>

<section><title>IcePack.Registry.Admin.ThreadPool.SizeMax</title>
<section><title>Synopsis</title>
<synopsis>
IcePack.Registry.Admin.ThreadPool.SizeMax=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the value of the property
<link linkend="adapterThreadpool.SizeMax"><replaceable>adapter</replaceable>.ThreadPool.SizeMax</link>
for the object adapter named <literal>IcePack.Registry.Admin</literal>.
</para>
</section>
</section>

<section><title>IcePack.Registry.Admin.ThreadPool.SizeWarn</title>
<section><title>Synopsis</title>
<synopsis>
IcePack.Registry.Admin.ThreadPool.SizeWarn=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the value of the property
<link linkend="adapterThreadpool.SizeWarn"><replaceable>adapter</replaceable>.ThreadPool.SizeWarn</link>
for the object adapter named <literal>IcePack.Registry.Admin</literal>.
</para>
</section>
</section>

<section><title>IcePack.Registry.Internal.Endpoints</title>
<section><title>Synopsis</title>
<synopsis>
IcePack.Registry.Internal.Endpoints=<replaceable>endpoints</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the endpoints of the &IcePack; internal interface. The
internal endpoints must be accessible to &IcePack; nodes. Nodes use
this interface to communicate with the registry.
</para>
</section>
</section>

<section><title>IcePack.Registry.Internal.PublishedEndpoints</title>
<section><title>Synopsis</title>
<synopsis>
IcePack.Registry.Internal.PublishedEndpoints=<replaceable>endpoints</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the published endpoints of the &IcePack; internal interface. The
internal endpoints must be accessible to &IcePack; nodes. Nodes use
this interface to communicate with the registry.
Refer to the description of the object adapter property
<link linkend="adapter.PublishedEndpoints"><replaceable>adapter</replaceable>.PublishedEndpoints</link>
for more information.
</para>
</section>
</section>

<section><title>IcePack.Registry.Internal.ThreadPool.Size</title>
<section><title>Synopsis</title>
<synopsis>
IcePack.Registry.Internal.ThreadPool.Size=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the value of the property
<link linkend="adapterThreadpool.Size"><replaceable>adapter</replaceable>.ThreadPool.Size</link>
for the object adapter named <literal>IcePack.Registry.Internal</literal>.
</para>
</section>
</section>

<section><title>IcePack.Registry.Internal.ThreadPool.SizeMax</title>
<section><title>Synopsis</title>
<synopsis>
IcePack.Registry.Internal.ThreadPool.SizeMax=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the value of the property
<link linkend="adapterThreadpool.SizeMax"><replaceable>adapter</replaceable>.ThreadPool.SizeMax</link>
for the object adapter named <literal>IcePack.Registry.Internal</literal>.
</para>
</section>
</section>

<section><title>IcePack.Registry.Internal.ThreadPool.SizeWarn</title>
<section><title>Synopsis</title>
<synopsis>
IcePack.Registry.Internal.ThreadPool.SizeWarn=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the value of the property
<link linkend="adapterThreadpool.SizeWarn"><replaceable>adapter</replaceable>.ThreadPool.SizeWarn</link>
for the object adapter named <literal>IcePack.Registry.Internal</literal>.
</para>
</section>
</section>

<section><title>IcePack.Registry.Data</title>
<section><title>Synopsis</title>
<synopsis>
IcePack.Registry.Data=<replaceable>path</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the path of the &IcePack; registry data directory.
</para>
</section>
</section>

<section><title>IcePack.Registry.DynamicRegistration</title>
<section><title>Synopsis</title>
<synopsis>
IcePack.Registry.DynamicRegistration=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
If <replaceable>num</replaceable> is set to a value larger than zero,
the locator registry allows &Ice; servers to set endpoints for
object adapters that have not been previously registered.
</para>
</section>
</section>

<section><title>IcePack.Registry.Trace.ServerRegistry</title>
<section><title>Synopsis</title>
<synopsis>
IcePack.Registry.Trace.ServerRegistry=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
The server registry trace level:
<informaltable>
<tgroup cols=2>
<tbody>
<row>
<entry>0</entry>
<entry>No server registry trace. (default)</entry>
</row>
<row>
<entry>1</entry>
<entry>Trace server registration, removal.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</section>
</section>

<section><title>IcePack.Registry.Trace.AdapterRegistry</title>
<section><title>Synopsis</title>
<synopsis>
IcePack.Registry.Trace.AdapterRegistry=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
The object adapter registry trace level:
<informaltable>
<tgroup cols=2>
<tbody>
<row>
<entry>0</entry>
<entry>No object adapter registry trace. (default)</entry>
</row>
<row>
<entry>1</entry>
<entry>Trace object adapter registration, removal.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</section>
</section>

<section><title>IcePack.Registry.Trace.NodeRegistry</title>
<section><title>Synopsis</title>
<synopsis>
IcePack.Registry.Trace.NodeRegistry=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
The node registry trace level:
<informaltable>
<tgroup cols=2>
<tbody>
<row>
<entry>0</entry>
<entry>No node registry trace. (default)</entry>
</row>
<row>
<entry>1</entry>
<entry>Trace node registration, removal.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</section>
</section>

<section><title>IcePack.Registry.Trace.ObjectRegistry</title>
<section><title>Synopsis</title>
<synopsis>
IcePack.Registry.Trace.ObjectRegistry=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
The object registry trace level:
<informaltable>
<tgroup cols=2>
<tbody>
<row>
<entry>0</entry>
<entry>No object registry trace. (default)</entry>
</row>
<row>
<entry>1</entry>
<entry>Trace object registration, removal.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</section>
</section>

<section><title>IcePack.Node.Endpoints</title>
<section><title>Synopsis</title>
<synopsis>
IcePack.Node.Endpoints=<replaceable>endpoints</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the endpoints of the &IcePack; node interface. The node
endpoints must be accessible to the &IcePack; registry. The registry
uses this interface to communicate with the node.
</para>
</section>
</section>

<section><title>IcePack.Node.PublishedEndpoints</title>
<section><title>Synopsis</title>
<synopsis>
IcePack.Node.PublishedEndpoints=<replaceable>endpoints</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the published endpoints of the &IcePack; node interface. The node
endpoints must be accessible to the &IcePack; registry. The registry
uses this interface to communicate with the node.
Refer to the description of the object adapter property
<link linkend="adapter.PublishedEndpoints"><replaceable>adapter</replaceable>.PublishedEndpoints</link>
for more information.
</para>
</section>
</section>

<section><title>IcePack.Node.Name</title>
<section><title>Synopsis</title>
<synopsis>
IcePack.Node.Name=<replaceable>name</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the name of the &IcePack; node. All nodes using the same
registry must have unique names; a node refuses to start if
there is a node with the same name running already.
</para>
<note><para>The default value is the hostname as returned by
<literal>gethostname()</literal>.</para></note>
</section>
</section>

<section><title>IcePack.Node.Data</title>
<section><title>Synopsis</title>
<synopsis>
IcePack.Node.Data=<replaceable>path</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the path of the &IcePack; node data directory. The node
creates <literal>db</literal> and <literal>servers</literal>
subirectories in this directory if they do not already exist. The
<literal>db</literal> directory contains the node database. The
<literal>servers</literal> directory contains configuration data for
each deployed server.
</para>
</section>
</section>

<section><title>IcePack.Node.Output</title>
<section><title>Synopsis</title>
<synopsis>
IcePack.Node.Output=<replaceable>path</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the path of the &IcePack; node output directory. If set, the 
node redirects the <literal>stdout</literal> and <literal>stderr</literal> output of the started
servers to files named <replaceable>server</replaceable>.out and 
<replaceable>server</replaceable>.err in this directory. Otherwise, 
the started servers share the <literal>stdout</literal> and <literal>stderr</literal> of the &IcePack; node.
</para>
</section>
</section>

<section><title>IcePack.Node.PropertiesOverride</title>
<section><title>Synopsis</title>
<synopsis>
IcePack.Node.PropertiesOverride=<replaceable>overrides</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines a list of properties which override the properties defined in
server deployment descriptors. For example, in some cases it is desirable
to set the property <literal>Ice.Default.Host</literal> for servers, but
not in server deployment descriptors. The property definitions should
be separated by white space.
</para>
</section>
</section>

<section><title>IcePack.Node.RedirectErrToOut</title>
<section><title>Synopsis</title>
<synopsis>
IcePack.Node.RedirectErrToOut=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
If <replaceable>num</replaceable> is set to a value larger than zero,
the <literal>stderr</literal> of each started server is redirected to the server's <literal>stdout</literal>.
</para>
</section>
</section>

<section><title>IcePack.Node.WaitTime</title>
<section><title>Synopsis</title>
<synopsis>
IcePack.Node.WaitTime=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the interval in seconds that &IcePack; waits for server
activation and deactivation.</para>
<para>If a server is automatically activated and does not register its object
adapter endpoints within this time interval, the node assumes there is a
problem with the server and return an emtpy set of endpoints to the client.
</para>
<para>If a server is being gracefully deactivated and &IcePack; does not
detect the server deactivation during this time interval, &IcePack;
kills the server.</para>
<note><para>The default value is 60 seconds.</para></note>
</section>
</section>

<section><title>IcePack.Node.CollocateRegistry</title>
<section><title>Synopsis</title>
<synopsis>
IcePack.Node.CollocateRegistry=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
If <replaceable>num</replaceable> is set to a value larger than zero,
the node collocates the &IcePack; registry.
</para>
<note><para>The collocated registry is configured with the same
properties as the standalone &IcePack; registry.</para></note>
</section>
</section>

<section><title>IcePack.Node.PrintServersReady</title>
<section><title>Synopsis</title>
<synopsis>
IcePack.Node.PrintServersReady=<replaceable>token</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
The &IcePack; node prints "<replaceable>token</replaceable> ready"
on standard output after all the servers managed by the node are
ready. This is useful for scripts that wish to wait until all servers
are ready to be used.
</para>
</section>
</section>

<section><title>IcePack.Node.ThreadPool.Size</title>
<section><title>Synopsis</title>
<synopsis>
IcePack.Node.ThreadPool.Size=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the value of the property
<link linkend="adapterThreadpool.Size"><replaceable>adapter</replaceable>.ThreadPool.Size</link>
for the object adapter named <literal>IcePack.Node</literal>.
</para>
</section>
</section>

<section><title>IcePack.Node.ThreadPool.SizeMax</title>
<section><title>Synopsis</title>
<synopsis>
IcePack.Node.ThreadPool.SizeMax=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the value of the property
<link linkend="adapterThreadpool.SizeMax"><replaceable>adapter</replaceable>.ThreadPool.SizeMax</link>
for the object adapter named <literal>IcePack.Node</literal>.
</para>
</section>
</section>

<section><title>IcePack.Node.ThreadPool.SizeWarn</title>
<section><title>Synopsis</title>
<synopsis>
IcePack.Node.ThreadPool.SizeWarn=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the value of the property
<link linkend="adapterThreadpool.SizeWarn"><replaceable>adapter</replaceable>.ThreadPool.SizeWarn</link>
for the object adapter named <literal>IcePack.Node</literal>.
</para>
</section>
</section>

<section><title>IcePack.Node.Trace.Server</title>
<section><title>Synopsis</title>
<synopsis>
IcePack.Node.Trace.Server=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
The server trace level:
<informaltable>
<tgroup cols=2>
<tbody>
<row>
<entry>0</entry>
<entry>No server trace. (default)</entry>
</row>
<row>
<entry>1</entry>
<entry>Trace server addition, removal.</entry>
</row>
<row>
<entry>2</entry>
<entry>Like 1, but more verbose, including server activation and
deactivation and more diagnostic messages.</entry>
</row>
<row>
<entry>3</entry>
<entry>Like 2, but more verbose, including server transitional state
change (activating and deactivating).</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</section>
</section>

<section><title>IcePack.Node.Trace.Adapter</title>
<section><title>Synopsis</title>
<synopsis>
IcePack.Node.Trace.Adapter=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
The object adapter trace level:
<informaltable>
<tgroup cols=2>
<tbody>
<row>
<entry>0</entry>
<entry>No object adapter trace. (default)</entry>
</row>
<row>
<entry>1</entry>
<entry>Trace object adapter addition, removal.</entry>
</row>
<row>
<entry>2</entry>
<entry>Like 1, but more verbose, including object adapter activation and
deactivation and more diagnostic messages.</entry>
</row>
<row>
<entry>3</entry>
<entry>Like 2, but more verbose, including object adapter transitional state
change (e.g., `waiting for activation').</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</section>
</section>

<section><title>IcePack.Node.Trace.Activator</title>
<section><title>Synopsis</title>
<synopsis>
IcePack.Node.Trace.Activator=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
The activator trace level:
<informaltable>
<tgroup cols=2>
<tbody>
<row>
<entry>0</entry>
<entry>No activator trace. (default)</entry>
</row>
<row>
<entry>1</entry>
<entry>Trace process activation, termination.</entry>
</row>
<row>
<entry>2</entry>
<entry>Like 1, but more verbose, including process signaling and more
diagnostic messages on process activation.</entry>
</row>
<row>
<entry>3</entry>
<entry>Like 2, but more verbose, including more diagnostic messages on
process activation (e.g., path, working directory and arguments of the
activated process).</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</section>
</section>

</section>

<!-- ********************************************************************** -->
<section><title>&IceStorm; Properties</title>
<!-- ********************************************************************** -->

<section><title>IceStorm.TopicManager.AdapterId</title>
<section><title>Synopsis</title>
<synopsis>
IceStorm.TopicManager.AdapterId=<replaceable>id</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the value of the property
<link linkend="adapter.AdapterId"><replaceable>adapter</replaceable>.AdapterId</link>
for the object adapter named <literal>IceStorm.TopicManager</literal>.
</para>
</section>
</section>

<section><title>IceStorm.TopicManager.Endpoints</title>
<section><title>Synopsis</title>
<synopsis>
IceStorm.TopicManager.Endpoints=<replaceable>endpoints</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the endpoints for the &IceStorm; topic manager and topic objects.
</para>
</section>
</section>

<section><title>IceStorm.TopicManager.PublishedEndpoints</title>
<section><title>Synopsis</title>
<synopsis>
IceStorm.TopicManager.PublishedEndpoints=<replaceable>endpoints</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the published endpoints for the &IceStorm; topic manager and topic objects.
Refer to the description of the object adapter property
<link linkend="adapter.PublishedEndpoints"><replaceable>adapter</replaceable>.PublishedEndpoints</link>
for more information.
</para>
</section>
</section>

<section><title>IceStorm.TopicManager.RegisterProcess</title>
<section><title>Synopsis</title>
<synopsis>
IceStorm.TopicManager.RegisterProcess=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the value of the property
<link linkend="adapter.RegisterProcess"><replaceable>adapter</replaceable>.RegisterProcess</link>
for the object adapter named <literal>IceStorm.TopicManager</literal>.
</para>
</section>
</section>

<section><title>IceStorm.TopicManager.ThreadPool.Size</title>
<section><title>Synopsis</title>
<synopsis>
IceStorm.TopicManager.ThreadPool.Size=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the value of the property
<link linkend="adapterThreadpool.Size"><replaceable>adapter</replaceable>.ThreadPool.Size</link>
for the object adapter named <literal>IceStorm.TopicManager</literal>.
</para>
</section>
</section>

<section><title>IceStorm.TopicManager.ThreadPool.SizeMax</title>
<section><title>Synopsis</title>
<synopsis>
IceStorm.TopicManager.ThreadPool.SizeMax=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the value of the property
<link linkend="adapterThreadpool.SizeMax"><replaceable>adapter</replaceable>.ThreadPool.SizeMax</link>
for the object adapter named <literal>IceStorm.TopicManager</literal>.
</para>
</section>
</section>

<section><title>IceStorm.TopicManager.ThreadPool.SizeWarn</title>
<section><title>Synopsis</title>
<synopsis>
IceStorm.TopicManager.ThreadPool.SizeWarn=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the value of the property
<link linkend="adapterThreadpool.SizeWarn"><replaceable>adapter</replaceable>.ThreadPool.SizeWarn</link>
for the object adapter named <literal>IceStorm.TopicManager</literal>.
</para>
</section>
</section>

<section><title>IceStorm.Publish.AdapterId</title>
<section><title>Synopsis</title>
<synopsis>
IceStorm.Publish.AdapterId=<replaceable>id</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the value of the property
<link linkend="adapter.AdapterId"><replaceable>adapter</replaceable>.AdapterId</link>
for the object adapter named <literal>IceStorm.Publish</literal>.
</para>
</section>
</section>

<section><title>IceStorm.Publish.Endpoints</title>
<section><title>Synopsis</title>
<synopsis>
IceStorm.Publish.Endpoints=<replaceable>endpoints</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the endpoints for the &IceStorm; publisher objects.
</para>
</section>
</section>

<section><title>IceStorm.Publish.PublishedEndpoints</title>
<section><title>Synopsis</title>
<synopsis>
IceStorm.Publish.PublishedEndpoints=<replaceable>endpoints</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the published endpoints for the &IceStorm; publisher objects.
Refer to the description of the object adapter property
<link linkend="adapter.PublishedEndpoints"><replaceable>adapter</replaceable>.PublishedEndpoints</link>
for more information.
</para>
</section>
</section>

<section><title>IceStorm.Publish.RegisterProcess</title>
<section><title>Synopsis</title>
<synopsis>
IceStorm.Publish.RegisterProcess=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the value of the property
<link linkend="adapter.RegisterProcess"><replaceable>adapter</replaceable>.RegisterProcess</link>
for the object adapter named <literal>IceStorm.Publish</literal>.
</para>
</section>
</section>

<section><title>IceStorm.Publish.ThreadPool.Size</title>
<section><title>Synopsis</title>
<synopsis>
IceStorm.Publish.ThreadPool.Size=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the value of the property
<link linkend="adapterThreadpool.Size"><replaceable>adapter</replaceable>.ThreadPool.Size</link>
for the object adapter named <literal>IceStorm.Publish</literal>.
</para>
</section>
</section>

<section><title>IceStorm.Publish.ThreadPool.SizeMax</title>
<section><title>Synopsis</title>
<synopsis>
IceStorm.Publish.ThreadPool.SizeMax=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the value of the property
<link linkend="adapterThreadpool.SizeMax"><replaceable>adapter</replaceable>.ThreadPool.SizeMax</link>
for the object adapter named <literal>IceStorm.Publish</literal>.
</para>
</section>
</section>

<section><title>IceStorm.Publish.ThreadPool.SizeWarn</title>
<section><title>Synopsis</title>
<synopsis>
IceStorm.Publish.ThreadPool.SizeWarn=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the value of the property
<link linkend="adapterThreadpool.SizeWarn"><replaceable>adapter</replaceable>.ThreadPool.SizeWarn</link>
for the object adapter named <literal>IceStorm.Publish</literal>.
</para>
</section>
</section>

<section><title>IceStorm.Trace.TopicManager</title>
<section><title>Synopsis</title>
<synopsis>
IceStorm.Trace.TopicManager=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
The topic manager trace level:
<informaltable>
<tgroup cols=2>
<tbody>
<row>
<entry>0</entry>
<entry>No topic manager trace. (default)</entry>
</row>
<row>
<entry>1</entry>
<entry>Trace topic creation.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</section>
</section>

<section><title>IceStorm.Trace.Topic</title>
<section><title>Synopsis</title>
<synopsis>
IceStorm.Trace.Topic=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
The topic trace level:
<informaltable>
<tgroup cols=2>
<tbody>
<row>
<entry>0</entry>
<entry>No topic trace. (default)</entry>
</row>
<row>
<entry>1</entry>
<entry>Trace topic links, subscription, and unsubscription.</entry>
</row>
<row>
<entry>2</entry>
<entry>Like 1, but more verbose, including QoS information, and other
diagnostic information.
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</section>
</section>

<section><title>IceStorm.Trace.Flush</title>
<section><title>Synopsis</title>
<synopsis>
IceStorm.Trace.Flush=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Trace information on the thread that flushes batch reliability events to subscribers:
<informaltable>
<tgroup cols=2>
<tbody>
<row>
<entry>0</entry>
<entry>No flush trace. (default)</entry>
</row>
<row>
<entry>1</entry>
<entry>Trace each flush.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</section>
</section>

<section><title>IceStorm.Trace.Subscriber</title>
<section><title>Synopsis</title>
<synopsis>
IceStorm.Trace.Subscriber=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
The subscriber trace level:
<informaltable>
<tgroup cols=2>
<tbody>
<row>
<entry>0</entry>
<entry>No subscriber trace. (default)</entry>
</row>
<row>
<entry>1</entry>
<entry>Trace topic diagnostic information on subscription and
unsubscription.
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</section>
</section>

<section><title>IceStorm.Flush.Timeout</title>
<section><title>Synopsis</title>
<synopsis>
IceStorm.Flush.Timeout=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the interval in milliseconds that batch reliability events are
sent to subscribers. The default is 1000 ms. The minimum value of this
property is 100 ms.
</para>
</section>
</section>

<section><title>IceStorm.TopicManager.Proxy</title>
<section><title>Synopsis</title>
<synopsis>
IceStorm.TopicManager.Proxy=<replaceable>proxy</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the proxy for the &IceStorm; topic manager. This property is used by
the &IceStorm; administration tool, and may also be used by applications.
</para>
</section>
</section>

</section>

<!-- ********************************************************************** -->
<section><title>&Glacier2; Properties</title>
<!-- ********************************************************************** -->

<section><title>Glacier2.AddUserToAllowCategories</title>
<section><title>Synopsis</title>
<synopsis>
Glacier2.AddUserToAllowCategories=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Specifies whether to add an authenticated user id to the
<literal>Glacier2.AllowCategories</literal> property upon the
creation of a new session. The legal values are shown below:
<informaltable>
<tgroup cols=2>
<tbody>
<row>
<entry>0</entry>
<entry>Do not add the user id. (default)</entry>
</row>
<row>
<entry>1</entry>
<entry>Add the user id.</entry>
</row>
<row>
<entry>2</entry>
<entry>Add the user id with a leading underscore.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</section>
</section>

<section><title>Glacier2.Admin.Endpoints</title>
<section><title>Synopsis</title>
<synopsis>
Glacier2.Admin.Endpoints=<replaceable>endpoints</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the optional administrative endpoints of the &Glacier2; admin
interface. The administrative endpoints must be accessible to clients
that are using the &Glacier2; admin interface.
</para>
<note><para>Allowing access to the &Glacier2; admin interface is a
security risk! If this property is not defined, the admin interface
is disabled.</para></note>
</section>
</section>

<section><title>Glacier2.Admin.PublishedEndpoints</title>
<section><title>Synopsis</title>
<synopsis>
Glacier2.Admin.PublishedEndpoints=<replaceable>endpoints</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the optional administrative published endpoints of the &Glacier2; admin
interface. The administrative endpoints must be accessible to clients
that are using the &Glacier2; administrative interface.
Refer to the description of the object adapter property
<link linkend="adapter.PublishedEndpoints"><replaceable>adapter</replaceable>.PublishedEndpoints</link>
for more information.
</para>
<note><para>Allowing access to the &Glacier2; admin interface is a
security risk!</para></note>
</section>
</section>

<section><title>Glacier2.AdminIdentity</title>
<section><title>Synopsis</title>
<synopsis>
Glacier2.AdminIdentity=<replaceable>identity</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
The identity of the &Glacier2; admin interface. If not specified the
default value <literal>Glacier2/admin</literal> is used.
</para>
</section>
</section>

<section><title>Glacier2.AllowCategories</title>
<section><title>Synopsis</title>
<synopsis>
Glacier2.AllowCategories=<replaceable>list</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Specifies a whitespace-separated list of identity categories.
If this property is defined, then the &Glacier2; router only
allows requests to &Ice; objects with an identity that matches
one of the categories from this list.
If <literal>Glacier2.AddUserToAllowCategories</literal> is
defined with a non-zero value, the router automatically adds
the user id of each session to this list.
</para>
</section>
</section>

<section><title>Glacier2.Client.AlwaysBatch</title>
<section><title>Synopsis</title>
<synopsis>
Glacier2.Client.AlwaysBatch=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
If <replaceable>num</replaceable> is set to a value larger than zero,
the &Glacier2; router always batches queued oneway requests from
clients to servers regardless of the value of their <literal>_fwd</literal>
contexts. This property is only relevant when <literal>Glacier2.Client.Buffered=1</literal>.
The default value is 0.
</para>
</section>
</section>

<section><title>Glacier2.Client.Endpoints</title>
<section><title>Synopsis</title>
<synopsis>
Glacier2.Client.Endpoints=<replaceable>endpoints</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the client endpoints of the &Glacier2; router.
These endpoints must be accessible to router clients.
Use of a secure transport is highly recommended.
</para>
</section>
</section>

<section><title>Glacier2.Client.PublishedEndpoints</title>
<section><title>Synopsis</title>
<synopsis>
Glacier2.Client.PublishedEndpoints=<replaceable>endpoints</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the published client endpoints of the &Glacier2; router.
These endpoints must be accessible to router clients.
Use of a secure transport is highly recommended.
Refer to the description of the object adapter property
<link linkend="adapter.PublishedEndpoints"><replaceable>adapter</replaceable>.PublishedEndpoints</link>
for more information.
</para>
</section>
</section>

<section><title>Glacier2.Client.ForwardContext</title>
<section><title>Synopsis</title>
<synopsis>
Glacier2.Client.ForwardContext=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
If <replaceable>num</replaceable> is set to a value larger than zero,
the &Glacier2; router includes the context in forwarded requests from
clients to servers. The default value is 0.
</para>
</section>
</section>

<section><title>Glacier2.Client.SleepTime</title>
<section><title>Synopsis</title>
<synopsis>
Glacier2.Client.SleepTime=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
If <replaceable>num</replaceable> is set to a value larger than zero,
the &Glacier2; router sleeps for the specified number of milliseconds
after forwarding all queued requests from a client. This prevents the
client from flooding the router with requests.
This property is only relevant when <literal>Glacier2.Client.Buffered=1</literal>.
The default value is 0.
</para>
</section>
</section>

<section><title>Glacier2.Client.Trace.Override</title>
<section><title>Synopsis</title>
<synopsis>
Glacier2.Client.Trace.Override=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
If <replaceable>num</replaceable> is set to a value larger than zero,
the &Glacier2; router logs a trace message whenever a request was
overridden. The default value is 0.
</para>
</section>
</section>

<section><title>Glacier2.Client.Trace.Reject</title>
<section><title>Synopsis</title>
<synopsis>
Glacier2.Client.Trace.Reject=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
If <replaceable>num</replaceable> is set to a value larger than zero,
the &Glacier2; router logs a trace message whenever it rejects a client's
request because its identity category did not match one of the entries in
<literal>Glacier2.AllowCategories</literal>. The default value is 0.
</para>
</section>
</section>

<section><title>Glacier2.Client.Trace.Request</title>
<section><title>Synopsis</title>
<synopsis>
Glacier2.Client.Trace.Request=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
If <replaceable>num</replaceable> is set to a value larger than zero,
the &Glacier2; router logs a trace message for each request that is
forwarded from a client. The default value is 0.
</para>
</section>
</section>

<section><title>Glacier2.Client.Buffered</title>
<section><title>Synopsis</title>
<synopsis>
Glacier2.Client.Buffered=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
If <replaceable>num</replaceable> is set to a value larger than zero,
the &Glacier2; router queues incoming requests from clients and creates
an extra thread for each client connection that processes the queued
requests. If <replaceable>num</replaceable> is set to zero, the router
operates in unbuffered mode in which a request is forwarded in the
same thread that received it. The default value is 1.
</para>
<note><para>In unbuffered mode, twoway requests from a client are
serialized, and nested twoway requests are not supported.
</para></note>
</section>
</section>

<section><title>Glacier2.CryptPasswords</title>
<section><title>Synopsis</title>
<synopsis>
Glacier2.CryptPasswords=<replaceable>file</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Specifies the filename of a &Glacier2; access control list. Each
line of the file must contain a username and a password, separated
by whitespace. The password must be a 13-character, crypt-encoded
string. If this property is not defined, the default value is
<literal>passwords</literal>. This property is ignored if
<literal>Glacier2.PermissionsVerifier</literal> is defined.
</para>
</section>
</section>

<section><title>Glacier2.PermissionsVerifier</title>
<section><title>Synopsis</title>
<synopsis>
Glacier2.PermissionsVerifier=<replaceable>proxy</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Specifies the proxy of an object that implements the
<literal>Glacier2::PermissionsVerifier</literal> interface.
The router invokes this proxy to validate each new session
created by a client.
</para>
</section>
</section>

<section><title>Glacier2.RouterIdentity</title>
<section><title>Synopsis</title>
<synopsis>
Glacier2.RouterIdentity=<replaceable>identity</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
The identity of the &Glacier2; router interface. If not specified the
default value <literal>Glacier2/router</literal> is used.
</para>
</section>
</section>

<section><title>Glacier2.Server.AlwaysBatch</title>
<section><title>Synopsis</title>
<synopsis>
Glacier2.Server.AlwaysBatch=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
If <replaceable>num</replaceable> is set to a value larger than zero,
the &Glacier2; router always batches queued oneway requests from
servers to clients regardless of the value of their <literal>_fwd</literal>
contexts. This property is only relevant when <literal>Glacier2.Server.Buffered=1</literal>.
The default value is 0.
</para>
</section>
</section>

<section><title>Glacier2.Server.Endpoints</title>
<section><title>Synopsis</title>
<synopsis>
Glacier2.Server.Endpoints=<replaceable>endpoints</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the server endpoints of the &Glacier2; router.
These endpoints must be accessible to back end servers.
</para>
</section>
</section>

<section><title>Glacier2.Server.PublishedEndpoints</title>
<section><title>Synopsis</title>
<synopsis>
Glacier2.Server.PublishedEndpoints=<replaceable>endpoints</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the published server endpoints of the &Glacier2; router.
These endpoints must be accessible to back end servers.
Refer to the description of the object adapter property
<link linkend="adapter.PublishedEndpoints"><replaceable>adapter</replaceable>.PublishedEndpoints</link>
for more information.
</para>
</section>
</section>

<section><title>Glacier2.Server.ForwardContext</title>
<section><title>Synopsis</title>
<synopsis>
Glacier2.Server.ForwardContext=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
If <replaceable>num</replaceable> is set to a value larger than zero,
the &Glacier2; router includes the context in forwarded requests from
servers to clients. The default value is 0.
</para>
</section>
</section>

<section><title>Glacier2.Server.SleepTime</title>
<section><title>Synopsis</title>
<synopsis>
Glacier2.Server.SleepTime=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
If <replaceable>num</replaceable> is set to a value larger than zero,
the &Glacier2; router sleeps for the specified number of milliseconds
after forwarding all queued requests from a server. This prevents the
server from flooding the router with requests.
This property is only relevant when <literal>Glacier2.Server.Buffered=1</literal>.
The default value is 0.
</para>
</section>
</section>

<section><title>Glacier2.Server.Trace.Override</title>
<section><title>Synopsis</title>
<synopsis>
Glacier2.Server.Trace.Override=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
If <replaceable>num</replaceable> is set to a value larger than zero,
the &Glacier2; router logs a trace message whenever a request was
overridden. The default value is 0.
</para>
</section>
</section>

<section><title>Glacier2.Server.Trace.Request</title>
<section><title>Synopsis</title>
<synopsis>
Glacier2.Server.Trace.Request=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
If <replaceable>num</replaceable> is set to a value larger than zero,
the &Glacier2; router logs a trace message for each request that is
forwarded from a server. The default value is 0.
</para>
</section>
</section>

<section><title>Glacier2.Server.Buffered</title>
<section><title>Synopsis</title>
<synopsis>
Glacier2.Server.Buffered=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
If <replaceable>num</replaceable> is set to a value larger than zero,
the &Glacier2; router queues incoming requests from servers and creates
an extra thread for each servers connection that processes the queued
requests. If <replaceable>num</replaceable> is set to zero, the router
operates in unbuffered mode in which a request is forwarded in the
same thread that received it. The default value is 1.
</para>
<note><para>In unbuffered mode, twoway requests from a server are
serialized, and nested twoway requests are not supported.
</para></note>
<note><para>Unbuffered mode for server requests is susceptible to
a denial-of-service attack from hostile clients. Use caution!
</para></note>
</section>
</section>

<section><title>Glacier2.SessionManager</title>
<section><title>Synopsis</title>
<synopsis>
Glacier2.SessionManager=<replaceable>proxy</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Specifies the proxy of an object that implements the
<literal>Glacier2::SessionManager</literal> interface.
The router invokes this proxy to create a new session
for a client, but only after the router validates the
client's username and password.
</para>
</section>
</section>

<section><title>Glacier2.SessionTimeout</title>
<section><title>Synopsis</title>
<synopsis>
Glacier2.SessionTimeout=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
If <replaceable>num</replaceable> is set to a value larger than zero,
a client's session with the &Glacier2; router expires after the specified
<replaceable>num</replaceable> seconds of inactivity.
The default value is 0, meaning sessions do not expire due to inactivity.
</para>
<note><para>It is important that <replaceable>num</replaceable> be chosen
so that client sessions do not expire prematurely.
</para></note>
</section>
</section>

<section><title>Glacier2.Trace.RoutingTable</title>
<section><title>Synopsis</title>
<synopsis>
Glacier2.Trace.RoutingTable=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
If <replaceable>num</replaceable> is set to a value larger than zero,
the &Glacier2; router logs a trace message for each new proxy that is
added to the router's internal routing table.
The default value is 0.
</para>
</section>
</section>

<section><title>Glacier2.Trace.Session</title>
<section><title>Synopsis</title>
<synopsis>
Glacier2.Trace.Session=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
If <replaceable>num</replaceable> is set to a value larger than zero,
the &Glacier2; router logs trace messages about session-related activities.
The default value is 0.
</para>
</section>
</section>

</section>

<!-- ********************************************************************** -->
<section><title>&Freeze; Properties</title>
<!-- ********************************************************************** -->

<section><title>Freeze.DbEnv.<replaceable>env-name</replaceable>.CheckpointPeriod</title>
<section><title>Synopsis</title>
<synopsis>
Freeze.DbEnv.<replaceable>env-name</replaceable>.CheckpointPeriod=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Every Berkeley DB environment created by Freeze has an associated thread that checkpoints this environment every
<replaceable>num</replaceable> seconds. If <replaceable>num</replaceable> is less than 0, no checkpoint is performed.
Defaults to 120 seconds.
</para>
</section>
</section>


<section><title>Freeze.DbEnv.<replaceable>env-name</replaceable>.DbHome</title>
<section><title>Synopsis</title>
<synopsis>
Freeze.DbEnv.<replaceable>env-name</replaceable>.DbHome=<replaceable>db-home</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Defines the home directory of this &Freeze; database
environment. Defaults to <replaceable>env-name</replaceable>.
</para>
</section>
</section>

<section><title>Freeze.DbEnv.<replaceable>env-name</replaceable>.DbPrivate</title>
<section><title>Synopsis</title>
<synopsis>
Freeze.DbEnv.<replaceable>env-name</replaceable>.DbPrivate=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
If <replaceable>num</replaceable> is set to a value larger than zero,
&Freeze; instructs Berkeley DB to use process private memory instead of shared
memory. The default value is 1. Set it to 0 in order to run db_archive (or another Berkeley DB utility) on a running environment.
</para>
</section>
</section>

<section><title>Freeze.DbEnv.<replaceable>env-name</replaceable>.DbRecoverFatal</title>
<section><title>Synopsis</title>
<synopsis>
Freeze.DbEnv.<replaceable>env-name</replaceable>.DbRecoverFatal=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
If <replaceable>num</replaceable> is set to a value larger than zero,
"fatal" recovery is performed when the environment is opened. The default value is 0.
</para>
</section>
</section>

<section><title>Freeze.DbEnv.<replaceable>env-name</replaceable>.OldLogsAutoDelete</title>
<section><title>Synopsis</title>
<synopsis>
Freeze.DbEnv.<replaceable>env-name</replaceable>.OldLogsAutoDelete=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
If <replaceable>num</replaceable> is set to a value larger than zero,
old transactional logs no longer in use are deleted after each
periodic checkpoint  (see
<literal>Freeze.DbEnv.<replaceable>env-name</replaceable>.CheckpointPeriod</literal>). The default value is 1.
</para>
</section>
</section>

<section><title>Freeze.DbEnv.<replaceable>env-name</replaceable>.PeriodicCheckpointMinSize</title>
<section><title>Synopsis</title>
<synopsis>
Freeze.DbEnv.<replaceable>env-name</replaceable>.PeriodicCheckpointMinSize=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
<replaceable>num</replaceable> is the minimum size in kbytes for the
periodic checkpoint (see
<literal>Freeze.DbEnv.<replaceable>env-name</replaceable>.CheckpointPeriod</literal>). 
This value is passed to Berkeley DB's checkpoint function. Defaults to
0 (which means no minimum).
</para>
</section>
</section>


<section><title>Freeze.Evictor.<replaceable>env-name</replaceable>.<replaceable>filename</replaceable>.MaxTxSize</title>
<section><title>Synopsis</title>
<synopsis>
Freeze.Evictor.<replaceable>env-name</replaceable>.<replaceable>filename</replaceable>.MaxTxSize=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para> &Freeze; uses a background thread to save updates
to the database. Transactions are used to save many
facets together. <replaceable>num</replaceable> defines the maximum
number of facets saved per transaction. Defaults to 10 *
SaveSizeTrigger (see <literal>Freeze.Evictor.<replaceable>env-name</replaceable>.<replaceable>filename</replaceable>.SaveSizeTrigger</literal>); if this value is negative, the actual value is set to 100.
</para>
</section>
</section>

<section><title>Freeze.Evictor.<replaceable>env-name</replaceable>.<replaceable>filename</replaceable>.PopulateEmptyIndices</title>
<section><title>Synopsis</title>
<synopsis>
Freeze.Evictor.<replaceable>env-name</replaceable>.<replaceable>filename</replaceable>.PopulateEmptyIndices=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para> 
When <replaceable>num</replaceable> is not 0 and you create an evictor
with one or more empty indices, the createEvictor() call will populate
these indices by iterating over all the corresponding facets. This is particularly
useful after transforming a Freeze Evictor with FreezeScript, since
FreezeScript does not transform indices; however this can significantly slow down createEvictor() if you have an empty
index because none of the facets currently in your database match the type of this index. The default value for this property is 0.
</para>
</section>
</section>

<section><title>Freeze.Evictor.<replaceable>env-name</replaceable>.<replaceable>filename</replaceable>.SavePeriod</title>
<section><title>Synopsis</title>
<synopsis>
Freeze.Evictor.<replaceable>env-name</replaceable>.<replaceable>filename</replaceable>.SavePeriod=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para> &Freeze; uses a background thread to save updates
to the database. After <replaceable>num</replaceable> milliseconds
without saving, if there is any facet created, modified or destroyed, this background thread wakes up to
save these facets. When <replaceable>num</replaceable> is 0, there is
no periodic saving. Defaults to 60,000.
</para>
</section>
</section>


<section><title>Freeze.Evictor.<replaceable>env-name</replaceable>.<replaceable>filename</replaceable>.SaveSizeTrigger</title>
<section><title>Synopsis</title>
<synopsis>
Freeze.Evictor.<replaceable>env-name</replaceable>.<replaceable>filename</replaceable>.SaveSizeTrigger=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para> &Freeze; uses a background thread to save updates
to the database. When <replaceable>num</replaceable> is 0 or positive,
as soon as <replaceable>num</replaceable> or more facets have been
created, modified or destroyed, this background thread wakes up to
save them. When <replaceable>num</replaceable> is negative, there is no size trigger. Defaults to 10.
</para>
</section>
</section>

<section><title>Freeze.Evictor.<replaceable>env-name</replaceable>.<replaceable>filename</replaceable>.StreamTimeout</title>
<section><title>Synopsis</title>
<synopsis>
Freeze.Evictor.<replaceable>env-name</replaceable>.<replaceable>filename</replaceable>.StreamTimeout=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para> When the saving thread saves an object, it needs to lock
this object in order to get a consistent copy of the object's state. If the
lock cannot be acquired within <replaceable>num</replaceable> seconds,
a fatal error is generated. If a fatal error callback was registered
by the appplication, this callback is called; otherwise the program
is terminated immediately.
When <replaceable>num</replaceable> is 0 or negative, there is no
timeout. The default value is 0.
</para>
</section>
</section>

<section><title>Freeze.Trace.DbEnv</title>
<section><title>Synopsis</title>
<synopsis>
Freeze.Trace.DbEnv=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
The &Freeze; database environment activity trace level:
<informaltable>
<tgroup cols=2>
<tbody>
<row>
<entry>0</entry>
<entry>No database environment activity trace. (default)</entry>
</row>
<row>
<entry>1</entry>
<entry>Trace database open and close.</entry>
</row>
<row>
<entry>2</entry>
<entry>Also trace checkpoints and the removal of old log files.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</section>
</section>

<section><title>Freeze.Trace.Evictor</title>
<section><title>Synopsis</title>
<synopsis>
Freeze.Trace.Evictor=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
The &Freeze; evictor activity trace level:
<informaltable>
<tgroup cols=2>
<tbody>
<row>
<entry>0</entry>
<entry>No evictor activity trace. (default)</entry>
</row>
<row>
<entry>1</entry>
<entry>Trace &Ice; object and facet creation and destruction, facet streaming time, facet saving time, object eviction
(every 50 objects) and evictor deactivation.</entry>
</row>
<row>
<entry>2</entry>
<entry>Also trace object lookups, and all object evictions.</entry>
</row>
<row>
<entry>3</entry>
<entry>Also trace object retrieval from the database.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</section>
</section>

<section><title>Freeze.Trace.Map</title>
<section><title>Synopsis</title>
<synopsis>
Freeze.Trace.Map=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
The &Freeze; map activity trace level:
<informaltable>
<tgroup cols=2>
<tbody>
<row>
<entry>0</entry>
<entry>No map activity trace. (default)</entry>
</row>
<row>
<entry>1</entry>
<entry>Trace database open and close.</entry>
</row>
<row>
<entry>2</entry>
<entry>Also trace iterator and transaction operations, and reference
counting of the underlying database.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</section>
</section>

<section><title>Freeze.Warn.Deadlocks</title>
<section><title>Synopsis</title>
<synopsis>
Freeze.Warn.Deadlocks=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
If <replaceable>num</replaceable> is set to a value larger than zero,
&Freeze; logs a warning message when a deadlock occur. The default value is 0.
</para>
</section>
</section>

<section><title>Freeze.Warn.CloseInFinalize</title>
<section><title>Synopsis</title>
<synopsis>
Freeze.Warn.CloseInFinalize=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
If <replaceable>num</replaceable> is set to a value larger than zero,
&Freeze; logs a warning message when an application neglects to explicitly
close a map iterator. The default value is 1. (Java only)
</para>
</section>
</section>


</section>

<!-- ********************************************************************** -->
<section><title>&IcePatch2; Properties</title>
<!-- ********************************************************************** -->

<section><title>IcePatch2.Endpoints</title>
<section><title>Synopsis</title>
<synopsis>
IcePatch2.Endpoints=<replaceable>endpoints</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
Specifies the endpoints of the &IcePatch2; server. This property is required
by both the IcePatch2 server and client.
</para>
</section>
</section>

<section><title>IcePatch2.Admin.Endpoints</title>
<section><title>Synopsis</title>
<synopsis>
IcePatch2.Admin.Endpoints=<replaceable>endpoints</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
If this property is set, the &IcePatch2; server creates
an additional object of type <literal>IcePatch2::Admin</literal>.
The <literal>shutdown</literal> operation on this interface can be used
to remotely shut down the server. The endpoints specified by this
property should be secured against access from potentially
hostile clients.
</para>
</section>
</section>

<section><title>IcePatch2.Identity</title>
<section><title>Synopsis</title>
<synopsis>
IcePatch2.Identity=<replaceable>identity</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
This property determines the object ID of the <literal>IcePatch2::FileServer</literal>
singleton object offered by the &IcePatch2; server. The default
value is <literal>IcePatch2/server</literal>.
</para>
</section>
</section>

<section><title>IcePatch2.AdminIdentity</title>
<section><title>Synopsis</title>
<synopsis>
IcePatch2.AdminIdentity=<replaceable>identity</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
This property determines the object ID of the <literal>IcePatch2::Admin</literal>
singleton object offered by the &IcePatch2; server. The default
value is <literal>IcePatch2/admin</literal>.
</para>
</section>
</section>

<section><title>IcePatch2.Directory</title>
<section><title>Synopsis</title>
<synopsis>
IcePatch2.Directory=<replaceable>dir</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
The &IcePatch2; server uses this property to determine the data
directory if no data directory is specified on the command line.
</para>
<para>
This property is also read by the <literal>IcePatch2::Patcher</literal>
utility class to determine the data directory. The property
must be set before the class is instantiated.
</para>
</section>
</section>

<section><title>IcePatch2.ChunkSize</title>
<section><title>Synopsis</title>
<synopsis>
IcePatch2.ChunkSize=<replaceable>kilobytes</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
The &IcePatch2; client uses this property to determine
how many kilobytes are retrieved with each call to
<literal>getFileCompressed</literal>.
</para>
<para>
The default value is <literal>100</literal>.
</para>
</section>
</section>

<section><title>IcePatch2.Remove</title>
<section><title>Synopsis</title>
<synopsis>
IcePatch2.Remove=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
This property determines whether the &IcePatch2; client deletes
files that exist locally, but not on the server. A negative or
zero value prevents removal of files. A value of <literal>1</literal>
enables removal and causes the client to halt with an error if
removal of a file fails. A value of <literal>2</literal> or greater
also enables removal, but causes the client to silently ignore errors
during removal.
</para>
<para>
This property is also read by the <literal>IcePatch2::Patcher</literal>
utility class. The property must be set before the class is instantiated.
</para>
<para>
The default value is <literal>1</literal>.
</para>
</section>
</section>

<section><title>IcePatch2.Thorough</title>
<section><title>Synopsis</title>
<synopsis>
IcePatch2.Thorough=<replaceable>num</replaceable>
</synopsis>
</section>
<section>
<title>Description</title>
<para>
This property determines whether <literal>IcePatch2::Patcher</literal>
utility class recomputes checksums. Any value greater than zero is interpreted as true.
The property must be set before the class is instantiated.
The default value is <literal>0</literal> (false).
</para>
</section>
</section>

</section>
