示例#1
0
 async def _list_members(self, request):
     timeout_seconds = request.timeout_seconds
     if 0 == timeout_seconds:
         return notification_service_pb2.ListMembersResponse(
             return_code=notification_service_pb2.ReturnStatus.SUCCESS,
             return_msg='',
             members=[
                 member_to_proto(member)
                 for member in self.ha_manager.get_living_members()
             ])
     else:
         start = time.time()
         members = self.ha_manager.get_living_members()
         async with self.member_updated_condition:
             while time.time() - start < timeout_seconds:
                 try:
                     await asyncio.wait_for(
                         self.member_updated_condition.wait(),
                         timeout_seconds - time.time() + start)
                     members = self.ha_manager.get_living_members()
                     break
                 except asyncio.TimeoutError:
                     pass
         return notification_service_pb2.ListMembersResponse(
             return_code=notification_service_pb2.ReturnStatus.SUCCESS,
             return_msg='',
             members=[member_to_proto(member) for member in members])
示例#2
0
 def notifyNewMember(self, request, context):
     try:
         return self._notify_new_member(request)
     except Exception as e:
         return notification_service_pb2.ListMembersResponse(
             return_code=notification_service_pb2.ReturnStatus.ERROR,
             return_msg=str(e))
示例#3
0
 async def _list_members(self, request):
     timeout_seconds = request.timeout_seconds
     time.sleep(timeout_seconds)
     # this method is used in HA mode, so we just return an empty list here.
     return notification_service_pb2.ListMembersResponse(
         return_code=notification_service_pb2.ReturnStatus.SUCCESS,
         return_msg='',
         members=[])