odyssey/core/od_scheme.h

85 lines
1.6 KiB
C
Raw Normal View History

#ifndef OD_SCHEME_H_
#define OD_SCHEME_H_
/*
2016-11-08 11:18:58 +00:00
* odissey.
*
* PostgreSQL connection pooler and request router.
*/
typedef struct odscheme_server_t odscheme_server_t;
typedef struct odscheme_route_t odscheme_route_t;
typedef struct odscheme_t odscheme_t;
2016-11-07 14:19:12 +00:00
typedef enum {
OD_PUNDEF,
OD_PSESSION,
OD_PSTATEMENT,
OD_PTRANSACTION
} odpooling_t;
typedef enum {
OD_RUNDEF,
OD_RFORWARD,
OD_RROUND_ROBIN,
} odrouting_t;
struct odscheme_server_t {
2016-11-07 14:19:12 +00:00
int id;
2016-11-07 12:59:29 +00:00
char *name;
char *host;
int port;
int is_default;
odlist_t link;
};
struct odscheme_route_t {
2016-11-07 14:19:12 +00:00
odscheme_server_t *server;
char *route;
char *database;
char *user;
char *password;
int client_max;
int pool_min;
int pool_max;
odlist_t link;
};
struct odscheme_t {
char *config_file;
int server_id;
/* main */
int daemonize;
char *log_file;
char *pid_file;
char *pooling;
odpooling_t pooling_mode;
/* listen */
char *host;
int port;
int workers;
int client_max;
/* servers */
odlist_t servers;
/* routing */
char *routing;
odrouting_t routing_mode;
odlist_t routing_table;
};
void od_schemeinit(odscheme_t*);
void od_schemefree(odscheme_t*);
2016-11-07 14:19:12 +00:00
int od_schemevalidate(odscheme_t*, odlog_t*);
void od_schemeprint(odscheme_t*, odlog_t*);
2016-11-07 12:59:29 +00:00
odscheme_server_t*
2016-11-07 14:19:12 +00:00
od_schemeserver_add(odscheme_t*);
2016-11-07 12:59:29 +00:00
2016-11-07 14:19:12 +00:00
odscheme_server_t*
od_schemeserver_match(odscheme_t*, char*);
odscheme_route_t*
od_schemeroute_add(odscheme_t*);
2016-11-07 13:25:12 +00:00
#endif