mist/internal/http2/stream

Types

pub type InternalState {
  InternalState(data_selector: process.Selector(Message))
}

Constructors

pub type Message {
  Ready
  Data(bits: BitArray, end: Bool)
}

Constructors

  • Ready
  • Data(bits: BitArray, end: Bool)
pub type SendMessage {
  Send(
    identifier: frame.StreamIdentifier(frame.Frame),
    resp: response.Response(http.ResponseData),
  )
  Reset(
    identifier: frame.StreamIdentifier(frame.Frame),
    error: frame.ConnectionError,
  )
  SendHeaders(
    identifier: frame.StreamIdentifier(frame.Frame),
    status: Int,
    headers: List(#(String, String)),
  )
  SendData(
    identifier: frame.StreamIdentifier(frame.Frame),
    data: BitArray,
    sent: process.Subject(Result(Nil, Nil)),
  )
  ConsumeData(
    identifier: frame.StreamIdentifier(frame.Frame),
    size: Int,
  )
}

Constructors

pub type State {
  State(
    id: frame.StreamIdentifier(frame.Frame),
    state: StreamState,
    subject: process.Subject(Message),
    receive_window_size: Int,
    consumed_size: Int,
    send_window_size: Int,
    pending_content_length: option.Option(Int),
    headers_sent: Bool,
  )
}

Constructors

pub type StreamState {
  Open
  RemoteClosed
  Closed
}

Constructors

  • Open
  • RemoteClosed
  • Closed

Values

pub fn make_request(
  headers: List(#(String, String)),
  req: request.Request(http.Connection),
) -> Result(request.Request(http.Connection), Nil)
pub fn new(
  identifier: frame.StreamIdentifier(frame.Frame),
  handler: fn(request.Request(http.Connection)) -> response.Response(
    http.ResponseData,
  ),
  headers: List(#(String, String)),
  connection: http.Connection,
  sender: process.Subject(SendMessage),
  end: Bool,
  send_timeout: Int,
) -> Result(
  actor.Started(process.Subject(Message)),
  actor.StartError,
)
pub fn receive_data(
  state: State,
  length: Int,
  size: Int,
) -> State
✨ Search Document