code: def _create_channel_ref(
      buffer_size_bytes: int,
  ) -> "ray.ObjectRef":
      """
      Create a channel that can be read and written by co-located Ray processes.
  
      The channel has no buffer, so the writer will block until reader(s) have
      read the previous value. Only the channel creator may write to the channel.
  
      Args:
          buffer_size_bytes: The number of bytes to allocate for the object data and
              metadata. Writes to the channel must produce serialized data and
              metadata less than or equal to this value.
      Returns:
          Channel: A wrapper around ray.ObjectRef.
      """
      worker = ray._private.worker.global_worker
      worker.check_connected()
  
      value = b"0" * buffer_size_bytes
  
      try:
          object_ref = worker.put_object(
              value,
              owner_address=None,
              _is_experimental_mutable_object=True,
          )
      except ray.exceptions.ObjectStoreFullError:
          logger.info(
              "Put failed since the value was either too large or the "
              "store was full of pinned objects."
          )
          raise
      return object_ref
  
file_path: ray/python/ray/experimental/channel.py
imports: import io
  import logging
  from typing import Any, Optional
  import ray
  from ray.util.annotations import PublicAPI
label_desc: Use image node_id 1 for calling a global function with example usage: _create_channel_ref(buffer_size_bytes) and returns: object_ref