package game;
message RequestMessage
{
required string message = 1;
}
message ResponseMessage
{
required string message = 1;
}
package game;
import "common.proto";
option py_generic_services = true;
service GameService
{
rpc connect_server(RequestMessage) returns(RequestMessage);
}
class MyRpcChannel(service.RpcChannel):
def __init__(self, rpc_service, conn):
super(MyRpcChannel, self).__init__()
self.logger = LogManager.get_logger("MyRpcChannel")
def CallMethod(self, method_descriptor, rpc_controller, request, response_class, done):
""""protol buffer rpc 需要的函数,用来发送rpc调用"""
self.logger.info('CallMethod')
cmd_index = method_descriptor.index
assert(cmd_index < 65535)
data = request.SerializeToString()
total_len = len(data) + 2
self.conn.send_data(''.join([pack('<I', total_len), pack('<H', cmd_index), data]))
def from_request(self):
""""从网络解析出一个完整的请求之后调的函数"""
index_data = self.rpc_request.data[0:2]
cmd_index = unpack('<H', index_data)[0]
rpc_service = self.rpc_service
s_descriptor = rpc_service.GetDescriptor()
method = s_descriptor.methods[cmd_index]
try:
request = rpc_service.GetRequestClass(method)()
serialized = self.rpc_request.data[2:]
request.ParseFromString(serialized)
rpc_service.CallMethod(method, self.controller, request, None)
except:
self.logger.error("Call rpc method failed!")
self.logger.log_last_except()
return True
class GameService(game_service_pb2.GameService):
def __init__(self):
self.logger = LogManager.get_logger("GameService")
def connect_server(self, rpc_controller, request, callback):
self.logger.info('%s', request.message)
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有