| 68 | }; |
| 69 | |
| 70 | hstcpsvr::hstcpsvr(const config& c) |
| 71 | : cshared(), vshared() |
| 72 | { |
| 73 | vshared.shutdown = 0; |
| 74 | cshared.conf = c; /* copy */ |
| 75 | if (cshared.conf["port"] == "") { |
| 76 | cshared.conf["port"] = "9999"; |
| 77 | } |
| 78 | cshared.num_threads = cshared.conf.get_int("num_threads", 32); |
| 79 | cshared.sockargs.nonblocking = cshared.conf.get_int("nonblocking", 1); |
| 80 | cshared.sockargs.use_epoll = cshared.conf.get_int("use_epoll", 1); |
| 81 | if (cshared.sockargs.use_epoll) { |
| 82 | cshared.sockargs.nonblocking = 1; |
| 83 | } |
| 84 | cshared.readsize = cshared.conf.get_int("readsize", 1); |
| 85 | cshared.nb_conn_per_thread = cshared.conf.get_int("conn_per_thread", 1024); |
| 86 | cshared.for_write_flag = cshared.conf.get_int("for_write", 0); |
| 87 | cshared.plain_secret = cshared.conf.get_str("plain_secret", ""); |
| 88 | cshared.require_auth = !cshared.plain_secret.empty(); |
| 89 | cshared.sockargs.set(cshared.conf); |
| 90 | cshared.dbptr = database_i::create(c); |
| 91 | check_nfile(cshared.num_threads * cshared.nb_conn_per_thread); |
| 92 | thread_num_conns_vec.resize(cshared.num_threads); |
| 93 | cshared.thread_num_conns = thread_num_conns_vec.empty() |
| 94 | ? 0 : &thread_num_conns_vec[0]; |
| 95 | } |
| 96 | |
| 97 | hstcpsvr::~hstcpsvr() |
| 98 | { |