Below some frequently asked questions about CoralFIX.
- How to get string values from a FIX message without producing garbage?
You can simply callgetCharSequence(FixTag)
. CoralFIX maintains aStringBuilder
pool under-the-hood and will always return a different instance with the string contents as aCharSequence
. Just keep in mind that the pool is reset on every new FIX message, in other words, the StringBuilders from the pool will be re-used/overwritten on the following FIX message received. Therefore, although that’s seldom the use-case, if you need to store/save the string value across multiple FIX messages you must copy the contents from the CharSequence returned to somewhere else. - Can I get string values as a byte array so I can use them as keys to a ByteArrayMap?
Yes! Below an example:// first write a space (' ') to all bytes of the byte array ByteArrayUtils.clear(orderIdByteArray); // read the string value into the byte array int orderIdLength = fixMsg.readBytes(FixTags.OrderID, orderIdByteArray); if (orderIdLength <= 0) { // OrderID tag not present... nothing was read... } else { // use the byte array as the key to a ByteArrayMap Order order = orderByteArrayMap.get(orderIdByteArray); // (...) }