#include "SampleLib.h"
int tokenCallback(void *context, dpiAccessToken *tokenRefresh)
{
printf("Token callback is called.\n");
dpiAccessToken *accessToken;
accessToken = dpiSamples_getAccessToken();
tokenRefresh->token = accessToken->token;
tokenRefresh->tokenLength = accessToken->tokenLength;
tokenRefresh->privateKey = accessToken->privateKey;
tokenRefresh->privateKeyLength = accessToken->privateKeyLength;
return DPI_SUCCESS;
}
int main(int argc, char **argv)
{
dpiConn *conn1, *conn2;
dpiPool *pool;
dpiSampleParams *params;
dpiAccessToken *accessToken;
accessToken = dpiSamples_getAccessToken();
params = dpiSamples_getParams();
dpiPoolCreateParams poolCreateParams;
if (dpiContext_initPoolCreateParams(params->context,
&poolCreateParams) < 0)
return dpiSamples_showError();
poolCreateParams.minSessions = 1;
poolCreateParams.maxSessions = 10;
poolCreateParams.sessionIncrement = 1;
poolCreateParams.externalAuth = 1;
poolCreateParams.homogeneous = 1;
poolCreateParams.accessTokenCallback = tokenCallback;
dpiCommonCreateParams commonCreateParams;
if (dpiContext_initCommonCreateParams(params->context,
&commonCreateParams) < 0)
return dpiSamples_showError();
commonCreateParams.accessToken = accessToken;
if (dpiPool_create(params->context, NULL, 0, NULL, 0,
params->connectString, params->connectStringLength,
&commonCreateParams, &poolCreateParams, &pool) < 0)
return dpiSamples_showError();
printf("Connection pool is created.\n");
if (dpiPool_acquireConnection(pool, NULL, 0, NULL, 0, NULL,
&conn1) < 0)
return dpiSamples_showError();
printf("Session is acquired from connection pool.\n");
dpiAccessToken expiredAccessToken;
dpiSamples_populateAccessToken(&expiredAccessToken,
"ODPIC_SAMPLES_EXPIRED_ACCESS_TOKEN_LOC");
if (dpiPool_setAccessToken(pool, &expiredAccessToken) < 0)
return dpiSamples_showError();
if (dpiPool_acquireConnection(pool, NULL, 0, NULL, 0, NULL,
&conn2) < 0)
return dpiSamples_showError();
printf("Session is acquired from connection pool.\n");
printf("Done.\n");
return 0;
}