Current section

Files

Jump to
ankh lib ankh frame error.ex
Raw

lib/ankh/frame/error.ex

defmodule Ankh.Frame.Error do
@moduledoc """
HTTP/2 Error encoding and decoding
"""
@type t ::
:no_error
| :protocol_error
| :internal_error
| :flow_control_error
| :settings_timeout
| :stream_closed
| :frame_size_error
| :refused_stream
| :cancel
| :compression_error
| :connect_error
| :enache_your_calm
| :inadequate_security
| :http_1_1_required
@no_error 0x0
@protocol_error 0x1
@internal_error 0x2
@flow_control_error 0x3
@settings_timeout 0x4
@stream_closed 0x5
@frame_size_error 0x6
@refused_stream 0x7
@cancel 0x8
@compression_error 0x9
@connect_error 0xA
@enache_your_calm 0xB
@inadequate_security 0xC
@http_1_1_required 0xD
@doc """
Returns a human readable string for the corresponding error code atom
"""
@spec format(t) :: String.t()
def format(:no_error), do: "Graceful shutdown"
def format(:protocol_error), do: "Protocol error detected"
def format(:internal_error), do: "Implementation fault"
def format(:flow_control_error), do: "Flow-control limits exceeded"
def format(:settings_timeout), do: "Settings not acknowledged"
def format(:stream_closed), do: "Frame received for closed stream"
def format(:frame_size_error), do: "Frame size incorrect"
def format(:refused_stream), do: "Stream not processed"
def format(:cancel), do: "Stream cancelled"
def format(:compression_error), do: "Compression state not updated"
def format(:connect_error), do: "TCP connection error for CONNECT method"
def format(:enache_your_calm), do: "Processing capacity exceeded"
def format(:inadequate_security), do: "Negotiated TLS parameters not acceptable"
def format(:http_1_1_required), do: "Use HTTP/1.1 for the request"
def decode!(@no_error), do: :no_error
def decode!(@protocol_error), do: :protocol_error
def decode!(@internal_error), do: :internal_error
def decode!(@flow_control_error), do: :flow_control_error
def decode!(@settings_timeout), do: :settings_timeout
def decode!(@stream_closed), do: :stream_closed
def decode!(@frame_size_error), do: :frame_size_error
def decode!(@refused_stream), do: :refused_stream
def decode!(@cancel), do: :cancel
def decode!(@compression_error), do: :compression_error
def decode!(@connect_error), do: :connect_error
def decode!(@enache_your_calm), do: :enache_your_calm
def decode!(@inadequate_security), do: :inadequate_security
def decode!(@http_1_1_required), do: :http_1_1_required
def encode!(:no_error), do: <<@no_error::32>>
def encode!(:protocol_error), do: <<@protocol_error::32>>
def encode!(:internal_error), do: <<@internal_error::32>>
def encode!(:flow_control_error), do: <<@flow_control_error::32>>
def encode!(:settings_timeout), do: <<@settings_timeout::32>>
def encode!(:stream_closed), do: <<@stream_closed::32>>
def encode!(:frame_size_error), do: <<@frame_size_error::32>>
def encode!(:refused_stream), do: <<@refused_stream::32>>
def encode!(:cancel), do: <<@cancel::32>>
def encode!(:compression_error), do: <<@compression_error::32>>
def encode!(:connect_error), do: <<@connect_error::32>>
def encode!(:enache_your_calm), do: <<@enache_your_calm::32>>
def encode!(:inadequate_security), do: <<@inadequate_security::32>>
def encode!(:http_1_1_required), do: <<@http_1_1_required::32>>
end