MOQX.Runtime.ConnectionDriver (moqx v0.10.0)

Copy Markdown View Source

Process-owned bridge between one protocol implementation and MOQX.Transport.

The driver owns the transport context, stream handles and receive loop. A protocol implementation remains a pure reducer and requests IO through transition actions keyed by logical stream names.

Summary

Types

state()

@type state() :: %MOQX.Runtime.ConnectionDriver{
  client: term(),
  connection: term(),
  context: term(),
  event_recipient: term(),
  event_recipient_monitor: term(),
  profiles: term(),
  protocol: term(),
  protocol_state: term(),
  streams: term(),
  timers: term()
}

Functions

accept_subscription(client, request, published_track, options)

add_track(client, publication, track, options)

@spec add_track(MOQX.Client.t(), MOQX.Publication.t(), binary(), keyword()) ::
  {:ok, MOQX.PublishedTrack.t()} | {:error, term()}

cancel_discovery(client, discovery)

close(client, reason)

@spec close(MOQX.Client.t(), term()) :: :ok | {:error, term()}

discover(client, prefix, options)

finish_publication(client, publication, options)

@spec finish_publication(MOQX.Client.t(), MOQX.Publication.t(), keyword()) ::
  :ok | {:error, term()}

finish_subscription(client, subscription, options)

@spec finish_subscription(
  MOQX.Client.t(),
  MOQX.PublishedSubscription.t(),
  keyword()
) :: :ok | {:error, term()}

publish(client, namespace, options)

@spec publish(MOQX.Client.t(), [binary()], keyword()) ::
  {:ok, MOQX.Publication.t()} | {:error, term()}

publish_catalog(client, track, catalog)

publish_empty_group(client, track, group_id)

@spec publish_empty_group(MOQX.Client.t(), MOQX.PublishedTrack.t(), non_neg_integer()) ::
  :ok | {:error, term()}

publish_object(client, track, object)

@spec publish_object(MOQX.Client.t(), MOQX.PublishedTrack.t(), MOQX.Object.t()) ::
  :ok | {:error, term()}

reject_subscription(client, request, rejection)

@spec reject_subscription(
  MOQX.Client.t(),
  MOQX.PublicationSubscriptionRequest.t(),
  MOQX.SubscriptionRejection.t()
) :: :ok | {:error, term()}

reject_track_request(client, request, rejection)

start(endpoint, protocol, options, event_recipient)

@spec start(URI.t(), module(), keyword(), pid()) ::
  {:ok, MOQX.Client.t()} | {:error, term()}

subscribe(client, track, options)

@spec subscribe(MOQX.Client.t(), MOQX.TrackRef.t(), keyword()) ::
  {:ok, MOQX.Subscription.t()} | {:error, term()}

unsubscribe(client, subscription)

@spec unsubscribe(MOQX.Client.t(), MOQX.Subscription.t()) :: :ok | {:error, term()}

update_subscription(client, subscription, options)

@spec update_subscription(MOQX.Client.t(), MOQX.Subscription.t(), keyword()) ::
  :ok | {:error, term()}

withdraw_track(client, track, options)

@spec withdraw_track(MOQX.Client.t(), MOQX.PublishedTrack.t(), keyword()) ::
  :ok | {:error, term()}