dll_service.cpp
2.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#include <lib_include.h>
#include <lib_log.h>
#include <libmysql_iface.h>
#include <lib_proto/lib_msgbuf.h>
#include <bench_conf.h>
#include "func_rount.h"
static el::lib_mysql_if* g_db = NULL;
Cfunc_route* g_route_func = NULL;
#define VERSION_NUM "0.0.0.1"
extern "C" int on_init()
{
if(el_async::is_parent()){
DEBUG_LOG("======daemon start======");
}else{
DEBUG_LOG("======server start======");
g_db = new el::lib_mysql_if(el_async::bench_conf_t::get_instance()->get_strval("mysql", "ip"),
el_async::bench_conf_t::get_instance()->get_strval("mysql", "user"),
el_async::bench_conf_t::get_instance()->get_strval("mysql", "passwd"),
::atoi(el_async::bench_conf_t::get_instance()->get_strval("mysql", "port").c_str()),
true, el_async::bench_conf_t::get_instance()->get_strval("mysql", "unix_socket").c_str());
g_db_name_pre = el_async::bench_conf_t::get_instance()->get_strval("mysql", "db_name_pre");
g_route_func = new Cfunc_route(g_db);
}
return 0;
}
extern "C" int on_fini()
{
if (el_async::is_parent()) {
DEBUG_LOG("======daemon done======");
}else{
DEBUG_LOG("======server done======");
SAFE_DELETE(g_db);
SAFE_DELETE(g_route_func);
}
return 0;
}
extern "C" void on_events()
{
}
extern "C" int on_get_pkg_len(el::lib_tcp_peer_info_t* peer_fd_info,
const void* data, uint32_t len)
{
if (len < proto_head_t::PROTO_HEAD_LEN){
return 0;
}
char* c = (char*)data;
PROTO_LEN pkg_len = EL_BYTE_SWAP((PROTO_LEN)(*(PROTO_LEN*)c));
if (pkg_len < proto_head_t::PROTO_HEAD_LEN || pkg_len >= g_bench_conf->page_size_max){
CRIT_LOG("pkg len error |%u", pkg_len);
return -1;
}
if (len < pkg_len){
return 0;
}
return pkg_len;
}
extern "C" int on_cli_pkg(const void* data, int len, el::lib_tcp_peer_info_t* peer_fd_info)
{
g_route_func->do_handle_dispatcher(data, len, peer_fd_info);
return 0;
}
extern "C" void on_srv_pkg(const void* data, int len,
el::lib_tcp_peer_info_t* peer_fd_info)
{
}
extern "C" void on_cli_conn(el::lib_tcp_peer_info_t* peer_fd_info)
{
DEBUG_LOG("[fd:%d] connected", peer_fd_info->fd);
}
extern "C" void on_cli_conn_closed(int fd)
{
CRIT_LOG("[fd:%d]", fd);
}
extern "C" void on_svr_conn_closed(int fd)
{
}
extern "C" void on_svr_conn(int fd)
{
}
extern "C" void on_mcast_pkg(const void* data, int len)
{
}
extern "C" void on_addr_mcast_pkg(uint32_t id, const char* name,
const char* ip, uint16_t port, const char* data, int flag)
{
// TRACE_LOG("id:%u, name:%s, ip:%s, port:%u, flag:%u", id, name, ip, port, flag);
}
extern "C" void on_udp_pkg(int fd, const void* data, int len,
struct sockaddr_in* from, socklen_t fromlen)
{
}