glisten/acceptor
Types
pub type AcceptorError {
AcceptError
HandlerError
ControlError
}
Constructors
-
AcceptError
-
HandlerError
-
ControlError
pub type AcceptorMessage {
AcceptConnection(ListenSocket)
}
Constructors
-
AcceptConnection(ListenSocket)
pub type AcceptorState {
AcceptorState(
sender: Subject(AcceptorMessage),
socket: Option(Socket),
transport: Transport,
)
}
Constructors
-
AcceptorState( sender: Subject(AcceptorMessage), socket: Option(Socket), transport: Transport, )
pub type Pool(data) {
Pool(
listener_socket: ListenSocket,
handler: LoopFn(data),
initial_data: data,
pool_count: Int,
on_init: Option(fn(Subject(HandlerMessage)) -> Nil),
on_close: Option(fn(Subject(HandlerMessage)) -> Nil),
transport: Transport,
)
}
Constructors
-
Pool( listener_socket: ListenSocket, handler: LoopFn(data), initial_data: data, pool_count: Int, on_init: Option(fn(Subject(HandlerMessage)) -> Nil), on_close: Option(fn(Subject(HandlerMessage)) -> Nil), transport: Transport, )
Functions
pub fn new_pool(handler: fn(HandlerMessage, LoopState(Nil)) ->
Next(LoopState(Nil))) -> fn(ListenSocket) -> Pool(Nil)
Initialize acceptor pool where each handler has no state
pub fn new_pool_with_data(handler: fn(
HandlerMessage,
LoopState(a),
) -> Next(LoopState(a)), initial_data: a) -> fn(ListenSocket) ->
Pool(a)
Initialize an acceptor pool where each handler holds some state
pub fn over_ssl(make_pool: fn(ListenSocket) -> Pool(a)) -> fn(
ListenSocket,
) -> Pool(a)
Use SSL for the underlying socket.
pub fn start(pool: Pool(a)) -> Result(
Subject(AcceptorMessage),
StartError,
)
Worker process that handles accept
ing connections and starts a new process
which receives the messages from the socket
pub fn start_pool(pool: Pool(a)) -> Result(
Subject(Message),
StartError,
)
Starts a pool of acceptors of size pool_count
.
Runs loop_fn
on ever message received
pub fn with_close(make_pool: fn(ListenSocket) -> Pool(a), func: fn(
Subject(HandlerMessage),
) -> Nil) -> fn(ListenSocket) -> Pool(a)
Add an on_close
handler to the acceptor pool
pub fn with_init(make_pool: fn(ListenSocket) -> Pool(a), func: fn(
Subject(HandlerMessage),
) -> Nil) -> fn(ListenSocket) -> Pool(a)
Add an on_init
handler to the acceptor pool
pub fn with_pool_size(make_pool: fn(ListenSocket) -> Pool(a), pool_count: Int) -> fn(
ListenSocket,
) -> Pool(a)
Adjust the number of TCP acceptors in the pool