glisten/internal/acceptor
Types
pub type AcceptorError {
AcceptError(socket.SocketReason)
HandlerError(actor.StartError)
ControlError(atom.Atom)
}
Constructors
-
AcceptError(socket.SocketReason) -
HandlerError(actor.StartError) -
ControlError(atom.Atom)
pub type AcceptorMessage {
AcceptConnection(socket.ListenSocket)
}
Constructors
-
AcceptConnection(socket.ListenSocket)
pub type AcceptorState {
AcceptorState(
sender: process.Subject(AcceptorMessage),
socket: option.Option(socket.Socket),
transport: transport.Transport,
)
}
Constructors
-
AcceptorState( sender: process.Subject(AcceptorMessage), socket: option.Option(socket.Socket), transport: transport.Transport, )
pub type Pool(data, user_message) {
Pool(
handler: fn(
data,
handler.LoopMessage(user_message),
handler.Connection(user_message),
) -> handler.Next(data, handler.LoopMessage(user_message)),
pool_count: Int,
name: process.Name(
factory_supervisor.Message(
socket.Socket,
process.Subject(handler.Message(user_message)),
),
),
on_init: fn(handler.Connection(user_message)) -> #(
data,
option.Option(process.Selector(user_message)),
),
on_close: option.Option(fn(data) -> Nil),
transport: transport.Transport,
active_state: options.ActiveState,
)
}
Constructors
-
Pool( handler: fn( data, handler.LoopMessage(user_message), handler.Connection(user_message), ) -> handler.Next(data, handler.LoopMessage(user_message)), pool_count: Int, name: process.Name( factory_supervisor.Message( socket.Socket, process.Subject(handler.Message(user_message)), ), ), on_init: fn(handler.Connection(user_message)) -> #( data, option.Option(process.Selector(user_message)), ), on_close: option.Option(fn(data) -> Nil), transport: transport.Transport, active_state: options.ActiveState, )
Values
pub fn start(
pool: Pool(data, user_message),
listener_name: process.Name(listener.Message),
connection_supervisor: process.Name(
factory_supervisor.Message(
socket.Socket,
process.Subject(handler.Message(user_message)),
),
),
) -> Result(
actor.Started(process.Subject(AcceptorMessage)),
actor.StartError,
)
Worker process that handles accepting connections and starts a new process
which receives the messages from the socket
pub fn start_pool(
pool: Pool(data, user_message),
transport: transport.Transport,
port: Int,
options: List(options.TcpOption),
listener_name: process.Name(listener.Message),
) -> Result(
actor.Started(static_supervisor.Supervisor),
actor.StartError,
)
Starts a pool of acceptors of size pool_count.
Runs loop_fn on ever message received