####################
Command Line Options
####################

The following command-line options are supported by the *ts3d_sc_server* application:

.. csv-table::
	:header: "Setting", "Description", "Notes"
	
	"``--id ``", "This should be an identification string that can uniquely identify this invocation of the Stream Cache Server application. While the HOOPS Server application uses a standard UUID for this setting when it spawns a Stream Cache Server, no actual format for the string is enforced when not using the HOOPS Server. It is recommended that format be safe for URLs and filenames, especially if the liveliness reporting feature is used.", "Required: yes"
	"``--sc-port ``", "The port number that will be used for websocket communication with an associated HOOPS Web Viewer client.", "Required: yes"
	"``--license``", "A valid HOOPS Communicator license key must be specified. If this setting is omitted, then the ``--license-file`` setting must be used instead.", "One of either this setting or ``--license-file`` setting is required. Default: empty"
	"``--license-file``", "A filesystem path to a valid license file can be used in place of using the ``--license`` setting", "Required: One of either this setting or ``--license-file`` setting is required. Default: empty"
	"``--csr``", "If set to true, then client-side rendering will be enabled. This setting is independent from ``--ssr`` in that it is allowed to have both client-side and server-side rendering enabled. Note that if neither ``--csr`` or ``--ssr`` is specified, then the application will default to only enabling client-side rendering", "Required: no, Default: true"
	"``--ssr``", "If set to true, then server-side rendering will be enabled. Note that if neither ``--csr`` or ``--ssr`` is specified, then the application will default to only enabling client-side rendering.", "Required: no, Default: false"
	"``--ssr-gpu-index``", "For systems that have more than one GPU available, this value will indicate which GPU should be used if server-side rendering is enabled. The index value is zero-based, and should therefore be in the range 0 . If this setting is omitted, the system-defined default GPU will be used.", "Required: no, Default: system-defined"
	"``--ssr-egl``", "When this option is enabled, EGL will be used to create the GL context if ``--ssr true`` is specified.  Enabling this option removes the need for an X server to be running for hardware accelerated Server Side rendering. This option is reccomended on headless server environments and is currently only supported on Linux.", "Required: no, Default: system-defined default"
	"``--log-file``", "Specifies a path to a file that will be used for diagnostic logging. The specified file should not be used simultaneously by any other Stream Cache Servers; therefore, we recommend using the unique identifier specified by the ``--id`` setting in the file name. If this setting is omitted or set as an empty string, then no logging will occur.", "Required: no, Default: empty string"
	"``--log-file-category-mask``", "Used to indicate which categories of logging information should be recorded into the log file as specified by ``--log-file``. The categories and associated mask value that can be bitwise OR'd together are: error=1, warning=2, informational=4, debug=8.", "Required: no, Default: info|error|warning"
	"``--log-stdout-category-mask``", "Used to indicate which categories of logging information should be recorded to ``stdout``. The categories and associated mask value that can be bitwise OR'd together are: error=1, warning=2, informational=4, debug=8", "Required: no, Default: 0 (none)"
	"``--log-style-delta``", "If true, log entries using delta time format, otherwise absolute time.", "Required: no, Default: true"
	"``--initial-use-duration``", "Specifies a time duration in floating-point seconds in which websocket activity from a HOOPS Web Viewer client is expected. If the duration is exceeded with no activity, then the Stream Cache Server will exit. Use '0' to indicate no exiting due to inactivity.", "Required: no, Default: 15.0"
	"``--model-search-directories``", "Specifies one or more paths to directories that contain CAD models available for streaming. When more than one directory is specified, each directory should be separated by a single ';' character. Example: '/models1;/data/models2;/models3'", "Required: no, Default: empty string"
	"``--model-file``", "Path to a model file that will override any client-specified models. When specified, the Stream Cache Server will only stream the specified model regardless of any HOOPS Web Viewer model requests.", "Required: no, Default: empty string"
	"``--workspace-dir``", "Specifies a path to a directory that will be used for any temporary files generated by the Stream Cache Server.", "Required: no, Default: empty string"
	"``--session-token``", "Specifies a token string that must match a token string supplied by any connected HOOPS Web Viewer, otherwise streaming will be disabled. There is no enforced format for this string, the server just requires it to simply match that provided by the HOOPS Web Viewer. An empty string for both the Stream Cache Server and HOOPS Web Viewer is the default and allows normal streaming.", "Required: no, Default: empty string"
	"``--ssl-certificate-file``", "Specifies a path to an SSL Certificate file, which is necessary to enable the secure websocket protocol (wss) with any connected HOOPS Web Viewer. To use SSL, a private key must also be specified with ``--ssl-private-key-file``. If this setting is omitted, non-secure websocket protocol (ws) will be enabled.", "Required: no, Default: empty string"
	"``--ssl-private-key-file``", "Specifies a path to an SSL Private-Key file, which is necessary to enable the secure websocket protocol (wss) with any connected HOOPS Web Viewer. To use SSL, a certificate must also be specified with ``--ssl-certificate-file``. If this setting is omitted, non-secure websocket protocol (ws) will be enabled.", "Required: no, Default: empty string"
	"``--liveliness-endpoint``", "Specifies a base URL indicating where to report liveliness. Liveliness updates will be sent as an empty HTTP POST request to /?liveliness= where the liveliness value can be ``ready``, ``ping``, or ``disconnect``.", "Required: no, Default: empty string"
	"``--liveliness-update-frequency``", "Determines how often (in seconds) the liveliness state will be reported when ``--liveliness-endpoint`` has been specified.", "Required: no, Default: 5.5"
	"``--exit-on-load-finish``", "When specified as 'true', the Stream Cache Server will automatically exit after the first requested model has finished streaming.", "Required: no, Default: false"
	"``--sc-tick-timeout-ms``", "Specifies the amount of time in milliseconds that the Stream Cache Server will idle during its processing loop. A value of '0' will cause no idling, which may help streaming performance slightly but will likely cause the application to continuously consume a high amount of CPU resource. Larger values will cause longer idling, which will reduce performance but also reduce overall CPU usage.", "Required: no, Default: 10"
	"``--sc-verbose-logging``", "When set to ``true``, this will enable more diagnostic logging to the ``debug`` category as mentioned in the earlier ``category-mask`` settings.", "Required: no, Default: false"
	"``--service-respawn``", "This setting is useful when running the stream-cache server as a Windows Service and needing SSR support. A process spawned normally by a Windows Service will not have access to the GPU, and thus for this application would not be able to support SSR mode. However, when this setting is ``true``, the ts3d_sc_server will 'respawn' itself using the originating command line arguments and the same user credentials as the ``winlogon.exe`` process for the current user. This will cause the respawned version to run in a different Windows terminal mode that is allowed access to the GPU, and thus enables SSR ability. The respawned version will perform all normal operations of the stream-cache server, including rendering and communication with the HOOPS server. The originating version will only forward standard out from the respawned version, and exit in unison with the same exit code. **Important:** Only available on the Windows Platform.", "Required: no, Default: false"
	"``--service-respawn-log-suffix``", "When ``--service-respawn`` is 'true' and this application respawns itself, there is the potential for two distinct log files (one per process). This setting will control the naming for the originating process log file by appending this suffix to the standard log file name. If this value is unspecified or the empty string, then file logging for the originating process will be disabled. Regardless of this setting, the respawned process will utilize the standard log file name. This setting has no effect if ``--service-respawn`` is 'false'. **Important:** Only available on the Windows Platform.", "Required: no, Default: empty string"
	