# FeatStd V3.2.1

# FeatStd CMake Switches

<div class="contents" id="bkmrk-v3.2.0-v3.2.1-featst"><div class="contents"><div class="textblock"><table border="1" class="doxtable" style="border-collapse: collapse; width: 100%;"><tbody><tr><th>**V3.2.0**</th><th>**V3.2.1**</th></tr><tr><td>FEATSTD\_MONITOR\_TYPE</td><td>MONITOR\_COM\_TYPE</td></tr><tr><td>FEATSTD\_MONITOR\_BLOCK\_UNTIL\_CONNECT</td><td>MONITOR\_BLOCK\_UNTIL\_CONNECT</td></tr><tr><td>FEATSTD\_MONITOR\_TCPIP\_PORT</td><td>MONITOR\_TCPIP\_PORT</td></tr><tr><td>FEATSTD\_MONITOR\_TCPIP\_ADDRESS</td><td>MONITOR\_TCPIP\_ADDRESS</td></tr><tr><td>FEATSTD\_MONITOR\_TCPIP\_STACK\_ENABLED</td><td>MONITOR\_TCPIP\_STACK\_ENABLED</td></tr><tr><td>FEATSTD\_MONITOR\_SERIALPORT\_BAUDRATE</td><td>MONITOR\_SERIALPORT\_BAUDRATE</td></tr><tr><td>FEATSTD\_MONITOR\_SERIALPORT\_ADDRESS</td><td>MONITOR\_SERIALPORT\_ADDRESS</td></tr><tr><td>PERFORMANCE\_RECORDER\_GENERATION\_DIR</td><td>MONITOR\_CANDERA\_PERFORMANCE\_RECORDER\_GENERATION\_DIR</td></tr><tr><td>PERFORMANCE\_RECORDER\_TEMPLATE\_DIR</td><td>MONITOR\_CANDERA\_PERFORMANCE\_RECORDER\_TEMPLATE\_DIR</td></tr></tbody></table>

</div></div></div>Existing monitor settings have been moved from code to CMake settings:

<p class="callout info">These flags are marked as advanced and should only be changed if the current settings have side effects.</p>

<div class="contents" id="bkmrk-name-description-pos"><div class="textblock"><table border="1" cellpadding="5" cellspacing="0" style="width: 100%;"><tbody><tr bgcolor="#d4d4d4"><th style="width: 30.2832%;">**Name**</th><th style="width: 52.0406%;">**Description**</th><th style="width: 17.6761%;">**Possible values**</th></tr><tr><td style="width: 30.2832%;">MONITOR\_CANDERA\_PERF\_RECORD\_BUFFER\_SIZE</td><td style="width: 52.0406%;">Defines the buffer size on target which is used for performance log tracing.  
When only perf-log streaming is used, it can use a smaller buffer.  
4000 as size can be enough then. The effective minimum requirement depends on the amount of recorders.</td><td style="width: 17.6761%;">positive integer</td></tr><tr><td style="width: 30.2832%;">MONITOR\_CANDERA\_PERF\_RECORD\_STRID\_BUFFER\_SIZE</td><td style="width: 52.0406%;">Defines the maximum of stored strings that can be sent (performance logs)  
with an id to reduce payload.</td><td style="width: 17.6761%;">positive integer</td></tr><tr><td style="width: 30.2832%;">MONITOR\_CANDERA\_PERF\_RECORD\_STRING\_SIZE</td><td style="width: 52.0406%;">Defines the maximum length of a single string that can be sent (performance logs).</td><td style="width: 17.6761%;">positive integer</td></tr></tbody></table>

</div></div>---

# FeatStd Monitor

#### Non-blocking connection setup

The monitor supports non-blocking connection setup now. CGIAnalyzer and target can be connected any time now.

<div class="contents" id="bkmrk-"><div class="contents"><div class="textblock">---

</div></div></div>#### Performance logs: Payload reduction

The payload of performance logs are reduced to approx. 36 percentage of previous version. The buffer for streaming can be smaller now due to restructuring the sent data. Using the recording only functionality can store more recordings within the same buffer. The amount of recordings traced is defined by the size of buffer. Changes to the buffer size can be done by changing the CMake flag MONITOR\_CANDERA\_PERF\_RECORD\_BUFFER\_SIZE.

<div class="contents" id="bkmrk-see-also%3A-featstd-cm"><div class="textblock"><dl class="see"><dt>**See also:**</dt><dd><span style="color: rgb(230, 126, 35);">[FeatStd CMake Switches](https://doc316en.candera.eu/link/885#bkmrk-page-title)</span> for the changed CMake feature flag related to Monitor functionality.</dd></dl></div></div>---

# FeatStd Platform

#### 64 Bit Support

Support for building with 64 bit has been added. In order to obtain a 64 bit build, one has to configure the build to use a 64 bit compiler. Doing this will automatically enable the CMake variable FEATSTD\_64BIT\_PLATFORM which is further used in FeatStd. If a 32 bit compiler is used, the CMake variable FEATSTD\_32BIT\_PLATFORM will be enabled automatically.

Two new types have been introduced for unsigned and signed integers which extend to the correct size when used in a 64 bit system or a 32 bit system. These are **FeatStd::SizeType** and **FeatStd::OffsetType** (equivalent to std::size\_t type and std::ptrdiff\_t types).

<p class="callout info">The API has been adapted at various locations to use FeatStd::SizeType and FeatStd::OffsetType instead of integer types. Application code using a previous version will be compatible due to implicit integer conversion. Please take care on compiler warnings related to type conversions, alignment casts and signed/unsigned comparisons.</p>

---

# FeatStd Util

#### Thread safe String

The [FeatStd::String](http://dev.doc.cgistudio.at/APILINK/class_feat_std_1_1_string.html) class has been enhanced by a method [String::GetCriticalSection](http://dev.doc.cgistudio.at/APILINK/class_feat_std_1_1_string.html#a52f64553ae443fd990eaafe85995f1a6) which can be used to protect the internal c-string from modification by other threads.

<p class="callout info">The feature is only available when CMake flag FEATSTD\_THREADSAFETY\_ENABLED is enabled.</p>

---