class_docstr: The server side object that manages long pulling requests.
  
  The desired use case is to embed this in an Ray actor. Client will be
  expected to call actor.listen_for_change.remote(...). On the host side,
  you can call host.notify_changed(key, object) to update the state and
  potentially notify whoever is polling for these values.
  
  Internally, we use snapshot_ids for each object to identify client with
  outdated object and immediately return the result. If the client has the
  up-to-date verison, then the listen_for_change call will only return when
  the object is updated.
code: def _parse_poll_namespace(self, name: str):
      if name == LongPollNamespace.ROUTE_TABLE.name:
          return LongPollNamespace.ROUTE_TABLE
      elif name == LongPollNamespace.RUNNING_REPLICAS.name:
          return LongPollNamespace.RUNNING_REPLICAS
      else:
          return name
  
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 4 for calling the LongPollHost obj's underlying member method code with example usage: obj._parse_poll_namespace(name) and returns: LongPollNamespace, LongPollNamespace, name