cqueues = require "cqueues" url = require "net.url" class Server new: (hdlr) => @cq = cqueues.new! @hdlr = hdlr attach: (cq) => cq\wrap -> @cq\loop! listen: (srv) => @cq\wrap -> for conn in srv\clients! @cq\wrap -> with conn _, ip = \peername! request = \read "*l" \shutdown "r" u = url.parse request if u.path == "" u.path = "/" ctx = :ip host: u.host path: u.path query: u.query @hdlr\serve ctx, conn \close! { :Server }