Diff

net/httpclient_listener.lua @ 616:69bc5782b25e

Non-blocking HTTP requests (adding net.http)
author Matthew Wild <mwild1@gmail.com>
date Fri, 12 Dec 2008 04:06:15 +0000
child 737:ade262a8da7f
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/net/httpclient_listener.lua	Fri Dec 12 04:06:15 2008 +0000
@@ -0,0 +1,36 @@
+
+local connlisteners_register = require "net.connlisteners".register;
+
+
+local requests = {}; -- Open requests
+local buffers = {}; -- Buffers of partial lines
+
+local httpclient = { default_port = 80, default_mode = "*a" };
+
+function httpclient.listener(conn, data)
+	local request = requests[conn];
+
+	if not request then
+		print("NO REQUEST!! for "..tostring(conn));
+		return;
+	end
+
+	if data and request.reader then
+		request:reader(data);
+	end
+end
+
+function httpclient.disconnect(conn, err)
+	local request = requests[conn];
+	if request then
+		request:reader(nil);
+	end
+	--requests[conn] = nil;
+end
+
+function httpclient.register_request(conn, req)
+	print("Registering a request for "..tostring(conn));
+	requests[conn] = req;
+end
+
+connlisteners_register("httpclient", httpclient);