question

Upvotes
Accepted
13 2 2 7

What is the purpose to use rsslInitializeEx vs rsslInitialize?

I was wondering what the purpose of this other than giving additional initialization for the RSSL API. Also, if there is somewhere to be able to find information about this it would be great to know. I tried searching for it in the documentation but could not find it. It is located in the (ETA_INSTALL_PATH)/Include/Transport/rtr

Here is what they have for the two different methods:

        /* Initialization  & Uninitialization*/
/**
 *      @brief Structure that provides additional initialization information for the RSSL API
 */
typedef struct
{
        RsslLockingTypes rsslLocking;                   /*!< Lock method used for the RSSL API */
        rsslJITOpts              jitOpts;                               /*!< openSSL JIT options */
}RsslInitializeExOpts;


/**
 * @brief Static initializer for RsslInitializeExOpts
 */
#define RSSL_INIT_INITIALIZE_EX_OPTS { RSSL_LOCK_NONE, RSSL_INIT_SSL_LIB_JIT_OPTS }


/**
 * @brief Initializes the RSSL API and all internal members
 *
 * Typical use:<BR>
 * This is the first function called when using the RSSL. It
 * initializes internal data structures and pre-allocates some memory.
 *
 * @param rsslLocking Method of locking used.
 * @param error RSSL Error, to be populated in event of an error
 * @return RsslRet RSSL return value or RsslInitRets value.
 * @see RsslReturnCodes
 * @see RsslLockingTypes
 */
RSSL_API RsslRet rsslInitialize(        RsslLockingTypes rsslLocking,
                                                                                        RsslError *error);


/**
 * @brief Initializes the RSSL API and all internal members
 *
 * Typical use:<BR>
 * This is the first function called when using the RSSL. It
 * initializes internal data structures and pre-allocates some memory.
 *
 * @param rsslInitOpts Initialize options.
 * @param error RSSL Error, to be populated in event of an error
 * @return RsslRet RSSL return value or RsslInitRets value.
 * @see RsslReturnCodes
 * @see RsslInitializeExOpts
 */
RSSL_API RsslRet rsslInitializeEx(      RsslInitializeExOpts *rsslInitOpts,
                                                                                        RsslError *error);


elektronrefinitiv-realtimeelektron-sdkrrteta-apielektron-transport-api
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 5.0 MiB each and 10.0 MiB total.

1 Answer

Upvotes
Accepted
38.1k 71 35 53

@manning0218

Both functions are used to initialize internal data structures and pre-allocates some memory. However, rsslInitializeEx allows the application to specify the name of openSSL libssl and libcrypto shared libraries used by ETA for encrypted connection.

typedef struct {
	char*			 libsslName;			/*!< Name of the openSSL libssl shared library.  The RSSL API will attempt to dynamically load this library for encrypted connections. */
	char*			 libcryptoName;			/*!< Name of the openSSL libcrypto shared library.  The RSSL API will attempt to dynamically load this library for encrypted connections. */
} rsslJITOpts;

Using rsslInitialize is similar to calling rsslInitializeEx with NULL value in both libsslName and libcryptoName. This means that ETA will load the default libssl and libcrypto shared libraries, such as libssl.so.10 and libcrypto.so.10.

In conclusion, with rsslInitialize, ETA will load the default libssl and libcrypto shared libraries. However, the application can override this by specifying the name of openSSL shared libraries in the rsslJITOpts parameter when calling rsslInitializeEx.

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 5.0 MiB each and 10.0 MiB total.

Click below to post an Idea Post Idea