odyssey/core/od_scheme.h

129 lines
2.7 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 od_schemeserver_t od_schemeserver_t;
typedef struct od_schemeroute_t od_schemeroute_t;
typedef struct od_schemeuser_t od_schemeuser_t;
typedef struct od_scheme_t od_scheme_t;
2016-11-07 14:19:12 +00:00
typedef enum {
OD_PUNDEF,
OD_PSESSION,
OD_PTRANSACTION
} od_pooling_t;
2016-11-07 14:19:12 +00:00
typedef enum {
OD_RUNDEF,
OD_RFORWARD
} od_routing_t;
2016-11-07 14:19:12 +00:00
2017-01-23 14:49:26 +00:00
typedef enum {
OD_AUNDEF,
2017-01-24 10:28:43 +00:00
OD_ANONE,
2017-01-23 14:49:26 +00:00
OD_ACLEAR_TEXT,
OD_AMD5
} od_auth_t;
struct od_schemeserver_t {
2016-11-29 13:03:39 +00:00
int id;
char *name;
char *host;
int port;
int is_default;
od_list_t link;
};
struct od_schemeroute_t {
od_schemeserver_t *server;
2016-11-11 10:27:31 +00:00
int is_default;
char *target;
2016-11-07 14:19:12 +00:00
char *route;
char *database;
char *user;
int user_len;
2016-11-07 14:19:12 +00:00
char *password;
int password_len;
2016-11-15 12:07:58 +00:00
int ttl;
2017-02-14 15:33:08 +00:00
int discard;
int rollback;
2016-11-07 14:19:12 +00:00
int client_max;
int pool_size;
int pool_timeout;
2016-11-29 13:03:39 +00:00
od_list_t link;
};
struct od_schemeuser_t {
char *auth;
od_auth_t auth_mode;
char *user;
char *password;
int password_len;
int is_default;
int is_deny;
od_list_t link;
};
struct od_scheme_t {
2016-11-11 10:27:31 +00:00
char *config_file;
int server_id;
/* main */
2016-11-11 10:27:31 +00:00
int daemonize;
int log_verbosity;
2016-11-11 10:27:31 +00:00
char *log_file;
char *pid_file;
2016-11-28 14:38:19 +00:00
int syslog;
char *syslog_ident;
char *syslog_facility;
2016-11-11 10:27:31 +00:00
char *pooling;
od_pooling_t pooling_mode;
/* listen */
2016-11-11 10:27:31 +00:00
char *host;
int port;
int backlog;
2016-11-28 12:27:40 +00:00
int nodelay;
int keepalive;
2016-11-11 10:27:31 +00:00
int workers;
int client_max;
/* servers */
2016-11-29 13:03:39 +00:00
od_list_t servers;
/* routing */
2016-11-11 10:27:31 +00:00
char *routing;
od_routing_t routing_mode;
od_schemeroute_t *routing_default;
2016-11-29 13:03:39 +00:00
od_list_t routing_table;
/* users */
od_list_t users;
od_schemeuser_t *users_default;
};
void od_schemeinit(od_scheme_t*);
void od_schemefree(od_scheme_t*);
int od_schemevalidate(od_scheme_t*, od_log_t*);
void od_schemeprint(od_scheme_t*, od_log_t*);
od_schemeserver_t*
od_schemeserver_add(od_scheme_t*);
2016-11-07 12:59:29 +00:00
od_schemeserver_t*
od_schemeserver_match(od_scheme_t*, char*);
2016-11-07 14:19:12 +00:00
od_schemeroute_t*
od_schemeroute_add(od_scheme_t*);
2016-11-07 13:25:12 +00:00
od_schemeroute_t*
od_schemeroute_match(od_scheme_t*, char*);
od_schemeuser_t*
od_schemeuser_add(od_scheme_t*);
od_schemeuser_t*
od_schemeuser_match(od_scheme_t*, char*);
#endif