odyssey/sources/deploy.c

58 lines
1.1 KiB
C

/*
* Odyssey.
*
* Scalable PostgreSQL connection pooler.
*/
#include <stdlib.h>
#include <stdarg.h>
#include <stdint.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <inttypes.h>
#include <assert.h>
#include <machinarium.h>
#include <kiwi.h>
#include <odyssey.h>
int od_deploy(od_client_t *client, char *context)
{
od_instance_t *instance = client->global->instance;
od_server_t *server = client->server;
od_route_t *route = client->route;
if (route->id.physical_rep)
return 0;
/* compare and set options which are differs from server */
int query_count;
query_count = 0;
char query[512];
int query_size;
query_size = kiwi_vars_cas(&client->vars, &server->vars, query,
sizeof(query) - 1);
if (query_size > 0)
{
query[query_size] = 0;
query_size++;
machine_msg_t *msg;
msg = kiwi_fe_write_query(NULL, query, query_size);
if (msg == NULL)
return -1;
int rc;
rc = od_write(&server->io, msg);
if (rc == -1)
return -1;
query_count++;
od_debug(&instance->logger, context, client, server,
"deploy: %s", query);
}
return query_count;
}