connected_udp_socket_actor.pony

trait tag ConnectedUDPSocketActor[
  UDP: ConnectedUDPBackend ref = ConnectedUDPRuntimeBackend]
  is AsioEventNotify
  """
  The actor trait a connected UDP socket actor implements. Provide
  `_socket()` returning the `ConnectedUDPSocket` the actor owns; the
  behaviors here deliver ASIO events and resumed reads to it. Implement
  this together with `ConnectedUDPLifecycleEventReceiver` for the socket
  callbacks.
  """
  fun ref _socket(): ConnectedUDPSocket[UDP]

  be dispose() =>
    """
    Close the socket.
    """
    _socket().close()

  be _event_notify(event: AsioEventID, flags: U32, arg: U32) =>
    _socket()._event_notify(event, flags)

  be _read_again() =>
    """
    Resume reading: re-enter the read loop after yielding or exhausting the
    per-turn budget.
    """
    _socket().read_again()

  be _finish_initialization() =>
    _socket()._finish_initialization()