lib/membrane_rtc_engine/endpoints/webrtc/noop_connection_allocator.ex

defmodule Membrane.RTC.Engine.Endpoint.WebRTC.NoOpConnectionAllocator do
  @moduledoc """
  Implementation of `Membrane.RTC.Engine.Endpoint.WebRTC.ConnectionAllocator` that grants all allocations immediately.

  It might be useful for non-WebRTC Endpoints
  """
  @behaviour Membrane.RTC.Engine.Endpoint.WebRTC.ConnectionAllocator

  alias Membrane.RTC.Engine.Endpoint.WebRTC.ConnectionAllocator.AllocationGrantedNotification

  @impl true
  def create(), do: {:ok, nil}

  @impl true
  def destroy(nil), do: :ok

  @impl true
  def register_track_receiver(_manager, _bandwidth, _track, _options \\ []), do: :ok

  @impl true
  def update_bandwidth_estimation(_manager, _estimation), do: :ok

  @impl true
  def buffer_sent(_manager, _buffer), do: :ok

  @impl true
  def request_allocation(_manager, requested_allocation) do
    send(self(), %AllocationGrantedNotification{allocation: requested_allocation})
    :ok
  end

  @impl true
  def set_negotiability_status(_manager, _value), do: :ok
end