class_docstr: The asynchronous long polling client.
  
  Args:
      host_actor: handle to actor embedding LongPollHost.
      key_listeners: a dictionary mapping keys to
        callbacks to be called on state update for the corresponding keys.
      call_in_event_loop: an asyncio event loop
        to post the callback into.
docstr: Called after a single callback is completed.
  
  When the total number of callback completed equals to trigger_at,
  _poll_next() will be called. This is designed to make sure we only
  _poll_next() after all the state callbacks completed. This is a
  way to serialize the callback invocations between object versions.
docstr_tok: ["Called","after","a","single","callback","is","completed",".","When","the","total","number","of","callback","completed","equals","to","trigger_at",",","_poll_next","(",")","will","be","called",".","This","is","designed","to","make","sure","we","only","_poll_next","(",")","after","all","the","state","callbacks","completed",".","This","is","a","way","to","serialize","the","callback","invocations","between","object","versions","."]
code: def _on_callback_completed(self, trigger_at: int):
      """Called after a single callback is completed.
  
      When the total number of callback completed equals to trigger_at,
      _poll_next() will be called. This is designed to make sure we only
      _poll_next() after all the state callbacks completed. This is a
      way to serialize the callback invocations between object versions.
      """
      self._callbacks_processed_count += 1
      if self._callbacks_processed_count == trigger_at:
          self._poll_next()
  
imports: import asyncio
  import logging
  import os
  import random
  from asyncio.events import AbstractEventLoop
  from collections import defaultdict
  from dataclasses import dataclass
  from enum import Enum, auto
  from typing import Any, Callable, DefaultDict, Dict, Optional, Set, Tuple, Union
  import ray
  from ray._private.utils import get_or_create_event_loop
  from ray.serve._private.common import ReplicaName
  from ray.serve._private.constants import SERVE_LOGGER_NAME
  from ray.serve._private.utils import format_actor_name
  from ray.serve.generated.serve_pb2 import ActorNameList
  from ray.serve.generated.serve_pb2 import EndpointInfo
  from ray.serve.generated.serve_pb2 import EndpointSet, LongPollRequest, LongPollResult
  from ray.serve.generated.serve_pb2 import UpdatedObject
  from ray.util import metrics
label_desc: Use image node_id 2 for calling the LongPollClient obj's underlying member method code with example usage: obj._on_callback_completed(trigger_at) without return types