Mercurial > prosody-hg
comparison 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 |
| parents | |
| children | ade262a8da7f |
comparison
equal
deleted
inserted
replaced
| 615:4ae3e81513f3 | 616:69bc5782b25e |
|---|---|
| 1 | |
| 2 local connlisteners_register = require "net.connlisteners".register; | |
| 3 | |
| 4 | |
| 5 local requests = {}; -- Open requests | |
| 6 local buffers = {}; -- Buffers of partial lines | |
| 7 | |
| 8 local httpclient = { default_port = 80, default_mode = "*a" }; | |
| 9 | |
| 10 function httpclient.listener(conn, data) | |
| 11 local request = requests[conn]; | |
| 12 | |
| 13 if not request then | |
| 14 print("NO REQUEST!! for "..tostring(conn)); | |
| 15 return; | |
| 16 end | |
| 17 | |
| 18 if data and request.reader then | |
| 19 request:reader(data); | |
| 20 end | |
| 21 end | |
| 22 | |
| 23 function httpclient.disconnect(conn, err) | |
| 24 local request = requests[conn]; | |
| 25 if request then | |
| 26 request:reader(nil); | |
| 27 end | |
| 28 --requests[conn] = nil; | |
| 29 end | |
| 30 | |
| 31 function httpclient.register_request(conn, req) | |
| 32 print("Registering a request for "..tostring(conn)); | |
| 33 requests[conn] = req; | |
| 34 end | |
| 35 | |
| 36 connlisteners_register("httpclient", httpclient); |
