2018-08-28 14:43:46 +00:00
|
|
|
#ifndef ODYSSEY_FRONTEND_H
|
|
|
|
#define ODYSSEY_FRONTEND_H
|
2017-05-26 11:49:17 +00:00
|
|
|
|
|
|
|
/*
|
2018-03-12 14:03:15 +00:00
|
|
|
* Odyssey.
|
2017-05-26 11:49:17 +00:00
|
|
|
*
|
2018-04-04 13:19:58 +00:00
|
|
|
* Scalable PostgreSQL connection pooler.
|
2020-04-02 11:00:56 +00:00
|
|
|
*/
|
2017-05-26 11:49:17 +00:00
|
|
|
|
2020-04-02 11:00:56 +00:00
|
|
|
static inline machine_msg_t *
|
|
|
|
od_frontend_error_msg(od_client_t *client,
|
|
|
|
machine_msg_t *stream,
|
|
|
|
char *code,
|
|
|
|
char *fmt,
|
|
|
|
va_list args)
|
2018-08-28 14:43:46 +00:00
|
|
|
{
|
|
|
|
char msg[512];
|
2020-04-02 11:00:56 +00:00
|
|
|
int msg_len;
|
|
|
|
msg_len = od_snprintf(msg,
|
|
|
|
sizeof(msg),
|
|
|
|
"odyssey: %s%.*s: ",
|
2018-08-28 14:43:46 +00:00
|
|
|
client->id.id_prefix,
|
|
|
|
(signed)sizeof(client->id.id),
|
|
|
|
client->id.id);
|
|
|
|
msg_len += od_vsnprintf(msg + msg_len, sizeof(msg) - msg_len, fmt, args);
|
2019-01-23 15:43:52 +00:00
|
|
|
return kiwi_be_write_error(stream, code, msg, msg_len);
|
2018-08-28 14:43:46 +00:00
|
|
|
}
|
|
|
|
|
2020-04-02 11:00:56 +00:00
|
|
|
static inline machine_msg_t *
|
|
|
|
od_frontend_errorf(od_client_t *client,
|
|
|
|
machine_msg_t *stream,
|
|
|
|
char *code,
|
|
|
|
char *fmt,
|
|
|
|
...)
|
2018-08-28 14:43:46 +00:00
|
|
|
{
|
|
|
|
va_list args;
|
|
|
|
va_start(args, fmt);
|
|
|
|
machine_msg_t *msg;
|
2019-01-23 15:43:52 +00:00
|
|
|
msg = od_frontend_error_msg(client, stream, code, fmt, args);
|
2018-08-28 14:43:46 +00:00
|
|
|
va_end(args);
|
|
|
|
return msg;
|
|
|
|
}
|
|
|
|
|
2020-04-02 11:00:56 +00:00
|
|
|
int
|
|
|
|
od_frontend_error(od_client_t *, char *, char *, ...);
|
|
|
|
void
|
|
|
|
od_frontend(void *);
|
2017-05-26 11:49:17 +00:00
|
|
|
|
2018-08-28 14:43:46 +00:00
|
|
|
#endif /* ODYSSEY_FRONTEND_H */
|