aboutsummaryrefslogtreecommitdiff
path: root/src/tcp.gleam
blob: 30e443e4c7ca20c787963f5b72c22902b64f427d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import gleam/erlang/atom.{type Atom}
import glisten
import glisten/socket.{type Socket, type SocketReason}

@external(erlang, "glisten_tcp_ffi", "shutdown")
fn do_shutdown(socket: Socket, write: Atom) -> Result(Nil, SocketReason)

pub fn shutdown(socket: Socket) -> Result(Nil, SocketReason) {
  let assert Ok(write) = atom.from_string("write")

  do_shutdown(socket, write)
}

pub fn close_connection(connection: glisten.Connection(a)) {
  shutdown(connection.socket)
}