view src/mysql/ngx_mysql.h @ 5999:4d8936b1fc32

Upstream keepalive: drop ready flag on EAGAIN from recv(MSG_PEEK). Keeping the ready flag in this case might results in missing notification of broken connection until nginx tried to use it again. While there, stale comment about stale event was removed since this function is also can be called directly.
author Valentin Bartenev <vbart@nginx.com>
date Tue, 03 Mar 2015 17:48:57 +0300
parents d620f497c50f
children
line wrap: on
line source


/*
 * Copyright (C) Igor Sysoev
 * Copyright (C) Nginx, Inc.
 */


#ifndef _NGX_MYSQL_H_INCLUDED_
#define _NGX_MYSQL_H_INCLUDED_


#include <ngx_config.h>
#include <ngx_core.h>
#include <ngx_event.h>
#include <ngx_event_connect.h>


typedef struct ngx_mysql_s  ngx_mysql_t;

typedef void (*ngx_mysql_handler_pt)(ngx_mysql_t *m);


struct ngx_mysql_s {
    ngx_peer_connection_t   peer;

    ngx_buf_t              *buf;
    ngx_pool_t             *pool;

    ngx_str_t              *login;
    ngx_str_t              *passwd;
    ngx_str_t              *database;

    ngx_str_t               query;

    ngx_uint_t              pktn;

    ngx_mysql_handler_pt    handler;
    void                   *data;
    ngx_int_t               state;

};


#define NGX_MYSQL_CMDPKT_LEN  5


#if (NGX_HAVE_LITTLE_ENDIAN && NGX_HAVE_NONALIGNED && 0)

#define ngx_m16toh(n)      (*(uint32_t *) n & 0x0000ffff)
#define ngx_m24toh(n)      (*(uint32_t *) n & 0x00ffffff)
#define ngx_m32toh(n)      *(uint32_t *) n

#define ngx_htom16(n, m)   *(uint16_t *) n = (uint16_t) ((m) & 0xffff)

#define ngx_htom24(n, m)   (n)[0] = (u_char) ((m) & 0xff);                   \
                           (n)[1] = (u_char) (((m) >> 8) & 0xff);            \
                           (n)[2] = (u_char) (((m) >> 16) & 0xff)

#define ngx_htom32(n, m)   *(uint32_t *) (n) = (m)

#else

#define ngx_m16toh(n)      (n[0] | n[1] << 8)
#define ngx_m24toh(n)      (n[0] | n[1] << 8 | n[2] << 16)
#define ngx_m32toh(n)      (n[0] | n[1] << 8 | n[2] << 16 | n[3] << 24)

#define ngx_htom16(n, m)   (n)[0] = (u_char) (m); (n)[1] = (u_char) ((m) >> 8)

#define ngx_htom24(n, m)   (n)[0] = (u_char) ((m) & 0xff);                   \
                           (n)[1] = (u_char) (((m) >> 8) & 0xff);            \
                           (n)[2] = (u_char) (((m) >> 16) & 0xff)

#define ngx_htom32(n, m)   (n)[0] = (u_char) ((m) & 0xff);                   \
                           (n)[1] = (u_char) (((m) >> 8) & 0xff);            \
                           (n)[2] = (u_char) (((m) >> 16) & 0xff);           \
                           (n)[3] = (u_char) (((m) >> 24) & 0xff)

#endif


ngx_int_t ngx_mysql_connect(ngx_mysql_t *m);
ngx_int_t ngx_mysql_query(ngx_mysql_t *m);


#endif /* _NGX_MYSQL_H_INCLUDED_ */