mirror of
https://gitee.com/acl-dev/acl.git
synced 2024-12-04 12:59:39 +08:00
74 lines
1.5 KiB
C
74 lines
1.5 KiB
C
#include "lib_acl.h"
|
|
#include <stdlib.h>
|
|
#include <stdio.h>
|
|
#include <errno.h>
|
|
#include <string.h>
|
|
#include <string.h>
|
|
#include <getopt.h>
|
|
|
|
#include "service_main.h"
|
|
|
|
static void client_thread(int event_type acl_unused, void* arg)
|
|
{
|
|
ACL_WORKER_ATTR* attr = (ACL_WORKER_ATTR*) arg;
|
|
ACL_VSTREAM *client = (ACL_VSTREAM*) attr->run_data;
|
|
time_t last, cost;
|
|
|
|
while (1) {
|
|
last = time(NULL);
|
|
if (service_main(NULL, client) < 0)
|
|
break;
|
|
cost = time(NULL) - last;
|
|
if (cost >= 1)
|
|
printf("%s: >>> time cost = %ld\r\n", __FILE__, cost);
|
|
}
|
|
acl_vstream_close(client);
|
|
}
|
|
|
|
static void usage(const char *progname)
|
|
{
|
|
printf("usage: %s -[help]\r\n"
|
|
"-s server_addr\r\n"
|
|
"-f regnum\r\n", progname);
|
|
getchar();
|
|
}
|
|
|
|
int main(int argc, char *argv[])
|
|
{
|
|
ACL_VSTREAM *sstream, *client;
|
|
ACL_WORK_QUEUE* wq = acl_workq_create(100, 60, NULL, NULL);
|
|
char ch, *addr = "127.0.0.1:8889";
|
|
char *regnum = "regnum";
|
|
|
|
while ((ch = getopt(argc, argv, "hs:f:")) > 0) {
|
|
switch (ch) {
|
|
default:
|
|
case 'h':
|
|
usage(argv[0]);
|
|
exit (0);
|
|
case 's':
|
|
addr = acl_mystrdup(optarg);
|
|
break;
|
|
case 'f':
|
|
regnum = optarg;
|
|
break;
|
|
}
|
|
}
|
|
|
|
var_cfg_cache_file = acl_mystrdup(regnum);
|
|
acl_socket_init();
|
|
service_init(NULL);
|
|
|
|
sstream = acl_vstream_listen(addr, 32);
|
|
if (sstream == NULL)
|
|
acl_msg_fatal("can't listen on addr(%s)", addr);
|
|
|
|
printf("started, listen on %s ...\r\n", addr);
|
|
while (1) {
|
|
client = acl_vstream_accept(sstream, NULL, 0);
|
|
acl_workq_add(wq, client_thread, 0, client);
|
|
}
|
|
|
|
exit (0);
|
|
}
|