#include "lib_acl.h" #include #include "service_main.h" #include "service_var.h" static void service_test(void) { const char *addr = "127.0.0.1:8885"; ACL_VSTREAM *sstream = acl_vstream_listen(addr, 32), *client; int ret; assert(sstream != NULL); acl_xinetd_params_int_table(NULL, var_conf_int_tab); acl_xinetd_params_str_table(NULL, var_conf_str_tab); acl_xinetd_params_bool_table(NULL, var_conf_bool_tab); printf("listen %s ok\n", addr); service_init(NULL); while (1) { client = acl_vstream_accept(sstream, NULL, 0); if (client == NULL) { printf("accept error: %s\n", acl_last_serror()); break; } while (1) { if (acl_readable(ACL_VSTREAM_SOCK(client)) == 0) continue; ret = service_main(client, NULL); if (ret < 0) { acl_vstream_close(client); break; } if (ret > 0) break; } } service_exit(NULL); acl_vstream_close(sstream); } int main(int argc, char *argv[]) { if (argc == 2 && strcasecmp(argv[1], "test") == 0) { service_test(); } else { acl_ioctl_app_main(argc, argv, service_main, NULL, ACL_APP_CTL_INIT_FN, service_init, ACL_APP_CTL_EXIT_FN, service_exit, ACL_APP_CTL_CFG_BOOL, var_conf_bool_tab, ACL_APP_CTL_CFG_INT, var_conf_int_tab, ACL_APP_CTL_CFG_STR, var_conf_str_tab, ACL_APP_CTL_END); } return (0); }