sys.cpp
2.51 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
#include "sys.h"
#include "gateway.h"
#include "user.h"
#include "dbproxy.h"
#include <gateway_msg.pb.h>
#include <db.pb.h>
#include "shop.h"
sys_t* g_sys;
proto_head_t g_proto_head;
std::string g_serialize_to_string( ::google::protobuf::Message* msg )
{
std::string bin_new;
try {
msg->SerializeToString(&bin_new);
} catch (...) {
ERROR_LOG("");
}
return bin_new;
}
bool sys_t::is_run()
{
return this->b_game_server_boot_msg;
}
sys_t::sys_t()
{
this->b_game_server_boot_msg = false;
this->is_release = true;
this->platform = 0;
}
//////////////////////////////////////////////////////////////////////////
int gateway_t::on_sys_information_msg(el::lib_tcp_peer_info_t* peer_fd_info,
google::protobuf::Message* msg,
user_t* user)
{
gateway_msg::sys_information_msg_res out;
out.set_time_second(el_async::get_now_sec());
user->send_msg_res(&out);
return 0;
}
int gateway_t::on_sys_test_msg(el::lib_tcp_peer_info_t* peer_fd_info,
google::protobuf::Message* msg,
user_t* user)
{
gateway_msg::sys_test_msg_res out;
user->send_msg_res(&out);
return 0;
}
int gateway_t::on_gm_change_item_msg(el::lib_tcp_peer_info_t* peer_fd_info,
google::protobuf::Message* msg,
user_t* user)
{
if (g_sys->is_release){
return 0;
}
auto in = (gateway_msg::gm_change_item_msg*)msg;
ITEM_ID item_id = in->id();
int32_t cnt = in->cnt();
common_msg::item_cfg_t* ic = g_item_cfg_mgr->find(item_id);
if (NULL == ic){
return 0;
}
if (0 < cnt){
user->item_mgr.add(item_id, cnt);
} else {
user->item_mgr.reduce(item_id, -cnt);
}
return 0;
}
//////////////////////////////////////////////////////////////////////////
int dbproxy_t::on_game_server_boot_msg_res(el::lib_tcp_peer_info_t* peer_fd_info,
google::protobuf::Message* msg,
USER_ID uid, uint32_t seq,
uint32_t ret, user_t* user){
if (SUCC != ret){
return ret;
}
db_msg::game_server_boot_msg_res* in = (db_msg::game_server_boot_msg_res*) msg;
{//event
FOREACH_PB(in->events, index){
const common_msg::event_t& event = in->events(index);
if (common_msg::FOREVER_EVENT_SYS_SHOP_SALES_VOLUME == event.type()){
shop_element_t* se = g_shop_cfg_mgr->find(event.id());
if (se->e_time != event.time()){
g_sys->event_mgr.db_del_event(0, event.type(), event.id());
continue;
}
}
g_sys->event_mgr.load_from_db(event.type(), event.id(), event.data(), event.time(), event.str_data(), event.bin_data());
}
}
g_sys->b_game_server_boot_msg = true;
return SUCC;
}