int main(int argc, char* argv[]) { #if 0 acl_mem_slice_init(8, 1024, 100000, ACL_SLICE_FLAG_GC2 | ACL_SLICE_FLAG_RTGC_OFF | ACL_SLICE_FLAG_LP64_ALIGN); #endif // 初始化 acl 库 acl::acl_cpp_init(); master_service& ms = acl::singleton2<master_service>::get_instance(); // 设置配置参数表 ms.set_cfg_int(var_conf_int_tab); ms.set_cfg_int64(var_conf_int64_tab); ms.set_cfg_str(var_conf_str_tab); ms.set_cfg_bool(var_conf_bool_tab); // 开始运行 if (argc >= 2 && strcmp(argv[1], "alone") == 0) { const char* addr = "127.0.0.1:8888"; printf("listen on: %s\r\n", addr); ms.run_alone(addr, NULL, 5); // 单独运行方式 } else ms.run_daemon(argc, argv); // acl_master 控制模式运行 return 0; }
static void init(void) { #ifdef USE_LOG char logfile[] = "test.log"; char logpre[] = "thread_test"; #endif int i; if (__use_slice) acl_mem_slice_init(8, 10240, 100000, ACL_SLICE_FLAG_GC2 | ACL_SLICE_FLAG_RTGC_OFF | ACL_SLICE_FLAG_LP64_ALIGN); acl_init(); #ifdef USE_LOG acl_msg_open(logfile, logpre); #endif if (__send_size <= 0) __send_size = 100; __data = acl_mycalloc(1, __send_size); assert(__data); for (i = 0; i < __send_size - 2; i++) { __data[i] = 'i'; } __data[i++] = '\n'; __data[i] = 0; echo_server_init(__data, (int) strlen(__data), __echo_src, __line_length); }
static void init(int use_slice) { #if 0 char logfile[] = "test.log"; char logpre[] = "thread_test"; acl_msg_open(logfile, logpre); #endif if (use_slice) acl_mem_slice_init(8, 10240, 100000, ACL_SLICE_FLAG_GC2 | ACL_SLICE_FLAG_RTGC_OFF | ACL_SLICE_FLAG_LP64_ALIGN); acl_init(); echo_client_init(ECHO_CTL_SERV_ADDR, __svr_addr, ECHO_CTL_MAX_CONNECT, __nconnect, ECHO_CTL_MAX_LOOP, __nloop, ECHO_CTL_TIMEOUT, __timeout, ECHO_CTL_DATA_LEN, __dlen, ECHO_CTL_NCONN_PERSEC, __nconn_per_sec, ECHO_CTL_EVENT_MODE, __event_mode, ECHO_CTL_END); }
int main(int argc, char* argv[]) { char buf[8192], filepath[256]; int ret, n; ACL_VSTREAM* fp; ACL_XML* xml; struct timeval begin, end; double spent; int ch, use_slice = 0, cache_count = 1000; filepath[0] = 0; while ((ch = getopt(argc, argv, "hmc:f:")) > 0) { switch (ch) { case 'h': usage(argv[0]); return 0; case 'm': use_slice = 1; break; case 'c': cache_count = atoi(optarg); if (cache_count <= 0) cache_count = 1000; break; case 'f': snprintf(filepath, sizeof(filepath), "%s", optarg); break; default: break; } } if (use_slice) acl_mem_slice_init(8, 1024, 100000, ACL_SLICE_FLAG_GC2 | ACL_SLICE_FLAG_RTGC_OFF | ACL_SLICE_FLAG_LP64_ALIGN); if (filepath[0] == 0) { usage(argv[0]); return 1; } xml = acl_xml_alloc(); if (cache_count > 0) acl_xml_cache(xml, cache_count); fp = acl_vstream_fopen(filepath, O_RDONLY, 0600, 8192); if (fp == NULL) { printf("open file %s error %s\r\n", filepath, acl_last_serror()); acl_xml_free(xml); return 1; } gettimeofday(&begin, NULL); n = 0; ACL_METER_TIME("------begin------"); while (1) { ret = acl_vstream_fgets(fp, buf, sizeof(buf) - 1); if (ret == ACL_VSTREAM_EOF) break; buf[ret] = 0; acl_xml_parse(xml, buf); if (++n % 10000 == 0) { printf("line: %d\r\n", n); ACL_METER_TIME("-------ok------"); } if (n % cache_count == 0) { printf("reset xml, line: %d\r\n", n); acl_xml_reset(xml); } } gettimeofday(&end, NULL); spent = stamp_sub(&end, &begin); printf("\r\ntotal spent: %0.2f ms\r\n", spent); acl_xml_free(xml); acl_vstream_fclose(fp); return 0; }