EMILUA(3em)

πŸ“¦ version 0.12.1, in nixos 26.05, nixpkgs unstable

✨ NAME ✨

Okay so this is EMILUA(3em), the Emilua reference page, bestie, and the NAME is Emilua - Lua execution engine. That’s the whole vibe. πŸ’…


πŸŽ€ SYNOPSIS πŸŽ€

Here’s the synopsis, exactly as it appears, no cap:

local a = ip.tcp.acceptor.new()
a:open('v4')
a:set_option('reuse_address', true)
a:bind('127.0.0.1', 8080)
a:listen()

while true do
    local s = a:accept()
    spawn(function()
        my_client_handler(s)
    end)
end

✨ FUNCTIONS ✨

πŸ¦‹ new

new() β†’ ip.tcp.acceptor

Constructor. That’s it. Iconic. πŸ’–

🌸 open

open(self, address_family:  v4"|"v6"|ip.address)"

Open the acceptor.

address_family can be either "v4" or "v6". If you provide an ip.address object, the appropriate value will be inferred. ✨

πŸ’… set_option

set_option(self, opt: string, val)

Set an option on the acceptor.

Currently available options are:

πŸ“ get_option

get_option(self, opt: string) β†’ value

Get an option from the acceptor.

Currently available options are:

🐚 bind

bind(self, addr: ip.address|string, port: integer)

Bind the acceptor to the given local endpoint. 🌈

🌈 listen

listen(self [, backlog: integer])

Place the acceptor into the state where it will listen for new connections.

backlog is the maximum length of the queue of pending connections. If not provided, an implementation defined maximum length will be used. πŸ’«

πŸ”₯ accept

accept(self) β†’ ip.tcp.socket

Initiate an accept operation and blocks the current fiber until it completes or errs. πŸ”₯

πŸ¦‹ wait

wait(self, wait_type:  read"|"write"|"error")"

Wait for the socket to become ready to read, ready to write, or to have pending error conditions.

In short, the reactor model is exposed on top of the proactor model.

Important, bestie: You shouldn’t be using reactor-style operations on Emilua. However if you’re trying to compete against systemD (or just xinetd) implementing a service manager employing socket activation then you’ll need the readiness event to trigger the managed service startup sequence. πŸ‘‘

wait_type can be one of the following:

  • "read" β€” Wait for a socket to become ready to read.
  • "write" β€” Wait for a socket to become ready to write.
  • "error" β€” Wait for a socket to have error conditions pending.

πŸŽ€ close

close(self)

Close the acceptor.

Forward the call to the function with the same name in Boost.Asio at https://www.boost.org/doc/libs/1_70_0/doc/html/boost_asio/reference/basic_socket_acceptor/close/overload2.html:

Any asynchronous accept operations will be cancelled immediately. A subsequent call to open() is required before the acceptor can again be used to again perform socket accept operations.

πŸ’€ cancel

cancel(self)

Cancel all asynchronous operations associated with the acceptor.

Forward the call to the function with the same name in Boost.Asio at https://www.boost.org/doc/libs/1_70_0/doc/html/boost_asio/reference/basic_socket_acceptor/cancel/overload2.html:

This function causes all outstanding asynchronous connect, send and receive operations to finish immediately, and the handlers for cancelled operations will be passed the boost::asio::error::operation_aborted error.

🧚 assign

assign(self, address_family:  v4"|"v6"|ip.address, fd: file_descriptor)"

Assign an existing native acceptor to self.

address_family can be either "v4" or "v6". If you provide an ip.address object, the appropriate value will be inferred. 🧚

πŸ‘‘

release(self) β†’ file_descriptor

Release ownership of the native descriptor implementation.

Forward the call to the function with the same name in Boost.Asio at https://www.boost.org/doc/libs/1_81_0/doc/html/boost_asio/reference/basic_socket_acceptor/release/overload2.html:

This function causes all outstanding asynchronous accept operations to finish immediately, and the handlers for cancelled operations will be passed the boost::asio::error::operation_aborted error. Ownership of the native acceptor is then transferred to the caller.

🌸 PROPERTIES 🌸

🌟 is_open: boolean

Whether the acceptor is open.

🌟 local_address: ip.address

The local address endpoint of the acceptor.

🌟 local_port: integer

The local port endpoint of the acceptor.


πŸ’– okay bestie, that’s the whole page. This lil gem is from Emilua 0.12.1-nixpkgs1, dated 1980-01-01, and it’s the EMILUA(3em) manual. periodt. πŸŽ€βœ¨

πŸ“¦ where this page comes from