webmcp

changeset 473:981ebb743b36

Support proto = "main" in listen{...} call
author jbe
date Tue Jun 06 11:36:31 2017 +0200 (2017-06-06)
parents 07e7e218d8df
children d1c16b6611dd
files framework/bin/mcp.lua
line diff
     1.1 --- a/framework/bin/mcp.lua	Sun May 28 00:30:10 2017 +0200
     1.2 +++ b/framework/bin/mcp.lua	Tue Jun 06 11:36:31 2017 +0200
     1.3 @@ -352,9 +352,17 @@
     1.4      assert(args, "No argument passed to listen function")
     1.5      local min_requests_per_fork = args.min_requests_per_fork or 50
     1.6      local max_requests_per_fork = args.max_requests_per_fork or 200
     1.7 +    local main_handlers = {}
     1.8      local interval_handlers = {}
     1.9      for j, listener in ipairs(args) do
    1.10 -      if listener.proto == "interval" then
    1.11 +      if listener.proto == "main" then
    1.12 +        local name = listener.name or "Unnamed main thread #" .. #main_handlers+1
    1.13 +        if main_handlers[name] ~= nil then
    1.14 +          error('Main thread handler with duplicate name "' .. name .. '"')
    1.15 +        end
    1.16 +        main_handlers[name] = listener.handler
    1.17 +        listener.name = name
    1.18 +      elseif listener.proto == "interval" then
    1.19          local name = listener.name or "Unnamed interval #" .. #interval_handlers+1
    1.20          if interval_handlers[name] ~= nil then
    1.21            error('Interval handler with duplicate name "' .. name .. '"')
    1.22 @@ -375,7 +383,11 @@
    1.23      local outer_handler = http.generate_handler(inner_handler, args.http_options)
    1.24      args.prepare = postfork_init
    1.25      args.connect = function(socket)
    1.26 -      if socket.interval then
    1.27 +      if socket.main then
    1.28 +        request.initialize()
    1.29 +        main_handlers[socket.main]()
    1.30 +        return false
    1.31 +      elseif socket.interval then
    1.32          request_count = request_count + 1
    1.33          request.initialize()
    1.34          interval_handlers[socket.interval]()

Impressum / About Us