mirror of
https://github.com/tribufu/sdk-cpp
synced 2025-06-16 19:04:19 +00:00
Add libhv and test http client
This commit is contained in:
117
vendor/libhv/include/hv/hmain.h
vendored
Normal file
117
vendor/libhv/include/hv/hmain.h
vendored
Normal file
@ -0,0 +1,117 @@
|
||||
#ifndef HV_MAIN_H_
|
||||
#define HV_MAIN_H_
|
||||
|
||||
#include "hexport.h"
|
||||
#include "hplatform.h"
|
||||
#include "hdef.h"
|
||||
#include "hproc.h"
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#pragma comment(lib, "winmm.lib") // for timeSetEvent
|
||||
#endif
|
||||
|
||||
BEGIN_EXTERN_C
|
||||
|
||||
typedef struct main_ctx_s {
|
||||
char run_dir[MAX_PATH];
|
||||
char program_name[MAX_PATH];
|
||||
|
||||
char confile[MAX_PATH]; // default etc/${program}.conf
|
||||
char pidfile[MAX_PATH]; // default logs/${program}.pid
|
||||
char logfile[MAX_PATH]; // default logs/${program}.log
|
||||
|
||||
pid_t pid; // getpid
|
||||
pid_t oldpid; // getpid_from_pidfile
|
||||
|
||||
// arg
|
||||
int argc;
|
||||
int arg_len;
|
||||
char** os_argv;
|
||||
char** save_argv;
|
||||
char* cmdline;
|
||||
// parsed arg
|
||||
int arg_kv_size;
|
||||
char** arg_kv;
|
||||
int arg_list_size;
|
||||
char** arg_list;
|
||||
|
||||
// env
|
||||
int envc;
|
||||
int env_len;
|
||||
char** os_envp;
|
||||
char** save_envp;
|
||||
|
||||
// signals
|
||||
procedure_t reload_fn;
|
||||
void* reload_userdata;
|
||||
// master workers model
|
||||
int worker_processes;
|
||||
int worker_threads;
|
||||
procedure_t worker_fn;
|
||||
void* worker_userdata;
|
||||
proc_ctx_t* proc_ctxs;
|
||||
} main_ctx_t;
|
||||
|
||||
// arg_type
|
||||
#define NO_ARGUMENT 0
|
||||
#define REQUIRED_ARGUMENT 1
|
||||
#define OPTIONAL_ARGUMENT 2
|
||||
// option define
|
||||
#define OPTION_PREFIX '-'
|
||||
#define OPTION_DELIM '='
|
||||
#define OPTION_ENABLE "1"
|
||||
#define OPTION_DISABLE "0"
|
||||
typedef struct option_s {
|
||||
char short_opt;
|
||||
const char* long_opt;
|
||||
int arg_type;
|
||||
} option_t;
|
||||
|
||||
HV_EXPORT int main_ctx_init(int argc, char** argv);
|
||||
HV_EXPORT void main_ctx_free(void);
|
||||
|
||||
// ls -a -l
|
||||
// ls -al
|
||||
// watch -n 10 ls
|
||||
// watch -n10 ls
|
||||
HV_EXPORT int parse_opt(int argc, char** argv, const char* opt);
|
||||
// gcc -g -Wall -O3 -std=cpp main.c
|
||||
HV_EXPORT int parse_opt_long(int argc, char** argv, const option_t* long_options, int size);
|
||||
HV_EXPORT const char* get_arg(const char* key);
|
||||
HV_EXPORT const char* get_env(const char* key);
|
||||
|
||||
#if defined(OS_UNIX) && !HAVE_SETPROCTITLE
|
||||
HV_EXPORT void setproctitle(const char* fmt, ...);
|
||||
#endif
|
||||
|
||||
// pidfile
|
||||
HV_EXPORT int create_pidfile();
|
||||
HV_EXPORT void delete_pidfile(void);
|
||||
HV_EXPORT pid_t getpid_from_pidfile();
|
||||
|
||||
// signal=[start,stop,restart,status,reload]
|
||||
HV_EXPORT int signal_init(procedure_t reload_fn DEFAULT(NULL), void* reload_userdata DEFAULT(NULL));
|
||||
HV_EXPORT void signal_handle(const char* signal);
|
||||
#ifdef OS_UNIX
|
||||
// we use SIGTERM to quit process, SIGUSR1 to reload confile
|
||||
#define SIGNAL_TERMINATE SIGTERM
|
||||
#define SIGNAL_RELOAD SIGUSR1
|
||||
void signal_handler(int signo);
|
||||
#endif
|
||||
|
||||
// global var
|
||||
#define DEFAULT_WORKER_PROCESSES 4
|
||||
#define MAXNUM_WORKER_PROCESSES 256
|
||||
HV_EXPORT extern main_ctx_t g_main_ctx;
|
||||
|
||||
// master-workers processes
|
||||
HV_EXPORT int master_workers_run(
|
||||
procedure_t worker_fn,
|
||||
void* worker_userdata DEFAULT(NULL),
|
||||
int worker_processes DEFAULT(DEFAULT_WORKER_PROCESSES),
|
||||
int worker_threads DEFAULT(0),
|
||||
bool wait DEFAULT(true));
|
||||
|
||||
END_EXTERN_C
|
||||
|
||||
#endif // HV_MAIN_H_
|
Reference in New Issue
Block a user