mirror of
https://github.com/caiwx86/small-packages.git
synced 2026-11-03 15:23:56 +08:00
update 2026-07-28 01:38:11
This commit is contained in:
1 parent
20b786ab77
commit
25d570431d
6243 files changed
+2850542
No files matched your search
@@ -0,0 +1,126 @@
|
||||
/*
|
||||
* Copyright (C) AlexWoo(Wu Jie) wj19840501@gmail.com
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _NGX_TOOLKIT_MISC_H_INCLUDED_
|
||||
#define _NGX_TOOLKIT_MISC_H_INCLUDED_
|
||||
|
||||
|
||||
#include <ngx_config.h>
|
||||
#include <ngx_core.h>
|
||||
|
||||
|
||||
/*
|
||||
* scheme://[user@]host[:port]/path[?args][#fragment]
|
||||
*/
|
||||
typedef struct {
|
||||
ngx_str_t scheme;
|
||||
ngx_str_t user;
|
||||
ngx_str_t host;
|
||||
ngx_str_t port;
|
||||
ngx_str_t path;
|
||||
ngx_str_t args;
|
||||
ngx_str_t fragment;
|
||||
|
||||
ngx_str_t host_with_port; /* host[:port] */
|
||||
ngx_str_t uri_with_args; /* /path[?args][#fragment] */
|
||||
} ngx_request_url_t;
|
||||
|
||||
|
||||
#define NGX_MD5KEY_LEN 32
|
||||
|
||||
|
||||
/*
|
||||
* parse request url format as:
|
||||
* scheme://[user@]host[:port]/path[?args][#fragment]
|
||||
*
|
||||
* return value:
|
||||
* NGX_OK : parse success
|
||||
* NGX_ERROR: request url format error
|
||||
* paras:
|
||||
* request_url: url parse result return to user,
|
||||
* all paras in request url is segment point to url
|
||||
* url : request url for parse
|
||||
*/
|
||||
ngx_int_t ngx_parse_request_url(ngx_request_url_t *request_url, ngx_str_t *url);
|
||||
|
||||
/*
|
||||
* convert port to in_port_t according to scheme and port
|
||||
*
|
||||
* return value:
|
||||
* If port is set to correct number range in [1, 65535], return port
|
||||
* If port is set to non correct value, return 0
|
||||
* If port is not set, return default value for scheme:
|
||||
* 80 for http
|
||||
* 443 for https
|
||||
* 1935 for rtmp
|
||||
* 0 for others now
|
||||
* values:
|
||||
* scheme : sheme string like http https or rtmp
|
||||
* port : port for convert to in_port_t
|
||||
*/
|
||||
in_port_t ngx_request_port(ngx_str_t *scheme, ngx_str_t *port);
|
||||
|
||||
/*
|
||||
* calculating file md5key as md5sum in shell
|
||||
*
|
||||
* return value:
|
||||
* NGX_OK : calculating success
|
||||
* NGX_ERROR: calculating error such as file is not exist
|
||||
* paras:
|
||||
* fd : file desc for calculating md5key
|
||||
* md5key: md5key result
|
||||
*/
|
||||
ngx_int_t ngx_md5_file(ngx_fd_t fd, u_char md5key[NGX_MD5KEY_LEN]);
|
||||
|
||||
|
||||
/*
|
||||
* copy str
|
||||
*
|
||||
* return value:
|
||||
* NGX_OK: copy successd
|
||||
* NGX_ERROR: copy failed
|
||||
* paras:
|
||||
* pool: for alloc space for storing str
|
||||
* dst: str copy to
|
||||
* src: str copy from
|
||||
*/
|
||||
ngx_int_t ngx_copy_str(ngx_pool_t *pool, ngx_str_t *dst, ngx_str_t *src);
|
||||
|
||||
|
||||
/*
|
||||
* parse text to struct sockaddr
|
||||
*
|
||||
* return value:
|
||||
* 0: if text is not ipv4/ipv6/unix address
|
||||
* >0: socklen for sa
|
||||
*
|
||||
* paras:
|
||||
* sa: struct sockadd parse to
|
||||
* text: ipv4/ipv6/unix address for parsing, text could have port
|
||||
* len: text's length
|
||||
*/
|
||||
socklen_t ngx_sock_pton(struct sockaddr *sa, u_char *text, size_t len);
|
||||
|
||||
|
||||
#ifdef NGX_DEBUG
|
||||
|
||||
#define NGX_START_TIMING \
|
||||
struct timeval __start, __end; \
|
||||
ngx_gettimeofday(&__start);
|
||||
|
||||
#define NGX_STOP_TIMING(log, msg) \
|
||||
ngx_gettimeofday(&__end); \
|
||||
ngx_log_error(NGX_LOG_INFO, log, 0, msg " spend %ui us", \
|
||||
(__end.tv_sec - __start.tv_sec) * 1000000 \
|
||||
+ (__end.tv_usec - __start.tv_usec));
|
||||
|
||||
#else
|
||||
|
||||
#define NGX_START_TIMING
|
||||
#define NGX_STOP_TIMING(log, msg)
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
Reference in new issue
Block a user