def start_loop(): global is_sub_server glog.log("gnet>start_loop ------------------") if is_sub_server: trans_sub.start_loop() else: trans.start_loop()
def on_data(connection_id, buff): global MSG_MAP try: msg = msgpack.unpackb(buff) except Exception as e: glog.error("gnet>ERROR message format") raise e return # 强制转成[] msg = list(msg) glog.log("gnet>[recv] %s" % str(msg)) msgid = msg[0] if not msgid in MSG_MAP: glog.error("gnet>on_data msgid not in MSG_MAP|msgid:%s" % str(msgid)) return # 调用注册的函数 func = MSG_MAP[msgid] # msg[0]原来是msgid, 在逻辑中没有用处, 所以改成connection_id msg[0] = connection_id try: func(msg) except Exception, e: traceback.print_exc()
def init(ip, port): glog.log("server at (%s : %d)" % (ip, port)) trans.init((ip, port), on_connect, on_disconnect, on_data) import remote_call;remote_call.init() # 注册子服务器登录 reg(MSGID_SUB_SERVER_LOGIN, on_sub_server_login)
def init(): global MSG_MAP MSG_MAP = {} ip = '' port = 5018 glog.log("server at " + ip +"("+ str(port) +")" ) trans.init(ip, port, on_connect, on_disconnect, on_data)
def init(ip, port): glog.log("server at (%s : %d)" % (ip, port)) trans.init((ip, port), on_connect, on_disconnect, on_data) import remote_call remote_call.init() # 注册子服务器登录 reg(MSGID_SUB_SERVER_LOGIN, on_sub_server_login)
def init(): global MSG_MAP MSG_MAP = {} ip = '' port = 5018 glog.log("server at " + ip + "(" + str(port) + ")") trans.init(ip, port, on_connect, on_disconnect, on_data)
def sendm(data): global is_sub_server glog.log("gnet>[sendm] %s" % str(data)) if not is_sub_server: glog.error("gnet>can NOT do sendm()") return trans_sub.send(_pack(data))
def sends(sub_svr_name, sub_svr_id, data): global SUB_SERVER_MAP, is_sub_server glog.log("gnet>[sends] (%s : %d) %s" % (sub_svr_name, sub_svr_id, str(data))) if is_sub_server: glog.error("gnet>can NOT do sends()") return trans.send(SUB_SERVER_MAP[sub_svr_name][sub_svr_id], _pack(data))
def init_sub_server(main_ip, main_port, sub_name, sub_id): global is_sub_server glog.log("server sub_server (%s : %d) at %s:%d" % (sub_name, sub_id, main_ip, main_port)) trans_sub.init((main_ip, main_port), on_connect, on_disconnect, on_data) import remote_call;remote_call.init() # 发送子服务器登录 trans_sub.send(_pack([MSGID_SUB_SERVER_LOGIN, sub_name, sub_id])) is_sub_server = True
def _on_disconnect(): global func_on_disconnect, connection conn_id = connection.connection_id if func_on_disconnect: func_on_disconnect(conn_id) try: connection.socket.close() glog.log("trans>socket close OK") except Exception, e: raise e
def _on_disconnect(connection): global func_on_disconnect conn_id = connection.connection_id if func_on_disconnect: func_on_disconnect(conn_id) conn = connections.pop(conn_id) try: conn.socket.close() glog.log("trans>socket close OK") except Exception, e: raise e
def _on_disconnect(connection): global func_on_disconnect conn_id = connection.connection_id if func_on_disconnect: func_on_disconnect(conn_id) conn = connections.pop(conn_id) try: conn.socket.close() glog.log("socket close OK") except Exception, e: raise e
def init_sub_server(main_ip, main_port, sub_name, sub_id): global is_sub_server glog.log("server sub_server (%s : %d) at %s:%d" % (sub_name, sub_id, main_ip, main_port)) trans_sub.init((main_ip, main_port), on_connect, on_disconnect, on_data) import remote_call remote_call.init() # 发送子服务器登录 trans_sub.send(_pack([MSGID_SUB_SERVER_LOGIN, sub_name, sub_id])) is_sub_server = True
def on_disconnect(connection_id): name, id = _get_sub_server_by_connection(connection_id) if name: glog.log("on_disconnect sub server: (%s : %d)" % (name, id)) else: glog.log("on_disconnect: %d" % connection_id)
def send(connection_id, data): glog.log("gnet>[send] %d %s" % (connection_id, str(data))) trans.send(connection_id, _pack(data))
def start_loop(): glog.log("gnet>start_loop ------------------") trans.start_loop()
def on_connect(address, connection_id): glog.log("on_connect: %s %d" % (address, connection_id))