Portico New and Noteworthy v1.0.1

This article describes the new and noteworthy changes present in version 1.0.1

This is a small release containing fix-ups to help Portico run properly with JSAF and other C++ applications that use their own signal handlers. It also contains some other fixes for problems commonly experienced in deployed environments.

JSAF Stability Improvements
A lot of work has been done on getting Portico and JSAF working happily together. Most of the problems stem from JSAFs use of custom signal handlers, and this conflicting with internal requirements of Portico. Fortunately there is a reasonably simple remedy to this situation (although one that was difficult to find!), although the process of getting Portico and JSAF running together is still a little cumbersome. A guide on what is needed has been developed and is available here: Portico and JSAF.

Unique Federate Names
An often requested feature is to allow multiple federates in a single federation with the same name. By default, Portico will reject any federate that attempts to join with a name that another federate is already using. By setting the RID property  to , you can disable this check, thus easily allowing multiple instances of applications like JSAF or VBS2 to be run in a single federation without additional configuration.

For those interested, what happens internally is that when this setting is true and Portico sees that a second federate is attempting to join with a used federate name, it changes the requested name from "federateName" to "federateName (federateHandle)" in an attempt to make it unique.

Object Name Negotiation
When registering an object with a specific name (as many applications do), Portico has to do some additional work to make sure the name is unique within the federation. The work of negotiating with the other federates in the federation to make sure the name is unique imposes a significant performance penalty.

In the vast majority of circumstances, application themselves ensure that the names they use are unique (perhaps prefixing some local id or something or that nature to it). In these situations, the performance hit is for a process that has become redundant. In Portico v1.0.1 the default setting to always negotiate has been changed.

Unless explicitly enabled through the RID, a federate will not perform the lengthy negotiation process. This does not mean that no checks are made. If an object is already known to a federate, that name can't be reused. What is does mean is that if two federates attempt to register an object with the same name at the same time, duplicate names could exist in the federation. If problems occur, it is recommended to enable full negotiation through the RID file option  setting.

A number of changes have been made since the last official release. Over 200 separate tickets have been addressed as part of v0.9 and v1.0 development (v0.9 was an internal release, all changes are included in v1.0).