def SendRequest(self, method_descriptor, request, rpc_controller = None): # request packet format: # content-size(4B) + seqno(8B) + hash(method_name)(8B) # + serialized bytes of request message head_size = 20 seqno = self.__seqno self.__seqno += 1 msg_size = request.ByteSize() packet = struct.pack('=IQQ%ds' % msg_size, msg_size + head_size, seqno, internal.hash_string(method_descriptor.full_name), request.SerializeToString()) self.__sock.send(packet) return seqno
def SendRequest(self, method_descriptor, request, rpc_controller=None): # request packet format: # content-size(4B) + seqno(8B) + hash(method_name)(8B) # + serialized bytes of request message head_size = 20 seqno = self.__seqno self.__seqno += 1 msg_size = request.ByteSize() packet = struct.pack('=IQQ%ds' % msg_size, msg_size + head_size, seqno, internal.hash_string(method_descriptor.full_name), request.SerializeToString()) self.__sock.send(packet) return seqno
def __import_svc(self, svc_full_name): logging.info('import service:%s' % svc_full_name) i = svc_full_name.rfind('.') if i != -1: exec 'import %s' % svc_full_name[:i] exec 'svc_class = %s' % svc_full_name svc_obj = svc_class() svc_desc = svc_class.DESCRIPTOR index = 0 methods = {} for method_desc in svc_desc.methods: method_id = internal.hash_string(method_desc.full_name) logging.debug('import method:%d,%s' % (method_id, method_desc.full_name)) methods[method_id] = (index, getattr(svc_obj, method_desc.name), svc_obj.GetRequestClass(method_desc), svc_obj.GetResponseClass(method_desc)) index += 1 return (svc_obj, methods)