summaryrefslogtreecommitdiff
path: root/luxio.c
diff options
context:
space:
mode:
authorRob Kendrick (humdrum) <rjek@rjek.com>2012-05-29 12:58:52 +0100
committerRob Kendrick (humdrum) <rjek@rjek.com>2012-05-29 12:58:52 +0100
commit1b0ff80ed3f668ae4d9f3b84bb8892444e6159ee (patch)
tree222adf28fbb439ded1b7328977aaacba215989c1 /luxio.c
parente61461977aa4a43ffa31d6f686705e270109a09f (diff)
downloadluxio-1b0ff80ed3f668ae4d9f3b84bb8892444e6159ee.tar.gz
More docs, docgen now expands \t
Diffstat (limited to 'luxio.c')
-rw-r--r--luxio.c31
1 files changed, 30 insertions, 1 deletions
diff --git a/luxio.c b/luxio.c
index ef32bba..efffb11 100644
--- a/luxio.c
+++ b/luxio.c
@@ -1951,6 +1951,18 @@ luxio_mq_timedreceive(lua_State *L) /* POSIX.1-2001 */
/**# Socket handling *********************************************************/
+/**>
+ * This interface is slightly cooked. We provide userdata encapsulations for
+ * sockaddr and addrinfo types. Use `getaddrinfo()` to obtain an addrinfo
+ * object, then use `ipairs()` over it to get each entry to try.
+ *
+ * \t r, addrinfo = getaddrinfo("www.rjek.com", "80", 0, l.AF_UNSPEC, l.SOCK_STREAM)
+ * \t for _, ai in ipairs(addrinfo) do
+ * \t sock = socket(ai.ai_family, ai.ai_socktype, ai.ai_protocol)
+ * \t if connect(sock, ai.ai_addr) >= 0 then break end
+ * \t end
+ */
+
#define LUXIO_SOCKADDR_METATABLE_NAME "luxio.sockaddr"
#ifndef UNIX_PATH_MAX
/* From man 7 unix */
@@ -2311,6 +2323,10 @@ luxio_getsockopt(lua_State *L)
return luaL_error(L, "unhandled socket level %d", level);
}
+/**% setsockopt
+ * retval = setsockopt(fd, level, optname, optval, optlen);
+ * retval, errno = setsockopt(fd, level, optname, optval)
+ */
static int
luxio_setsockopt(lua_State *L)
{
@@ -2374,6 +2390,10 @@ luxio_setsockopt(lua_State *L)
return luaL_error(L, "unhandled socket level %d", level);
}
+/**% gai_strerror
+ * retval = gai_strerror(errnum);
+ * retval = gai_strerror(errno)
+ */
static int
luxio_gai_strerror(lua_State *L)
{
@@ -2382,6 +2402,11 @@ luxio_gai_strerror(lua_State *L)
return 1;
}
+/**% getaddrinfo
+ * retval = getaddrinfo(node, service, hints, res);
+ * errcode = getaddrinfo(node, service[, ai_flags/0, ai_family/AF_UNSPEC, ai_socktype/0, ai_protocol/0])
+ * addrinfo = getaddrinfo(node, service[, ai_flags/0, ai_family/AF_UNSPEC, ai_socktype/0, ai_protocol/0])
+ */
static int
luxio_getaddrinfo(lua_State *L)
{
@@ -2846,8 +2871,12 @@ luxio_gettimeofday(lua_State *L)
return 1;
}
-/* Misc utility functions ****************************************************/
+/**# Misc utility functions **************************************************/
+/**% strerror
+ * retval = strerror(errno);
+ * retval = strerror(errno)
+ */
static int
luxio_strerror(lua_State *L)
{