File: coroutine.lua

package info (click to toggle)
lua-resty-core 0.1.32-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 2,268 kB
  • sloc: sh: 207; perl: 143; makefile: 26
file content (28 lines) | stat: -rw-r--r-- 720 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
local base = require "resty.core.base"
local get_request = base.get_request

do
    local keys = {'create', 'yield', 'resume', 'status', 'wrap'}
    local get_raw_phase = ngx.get_raw_phase

    for _, key in ipairs(keys) do
        local std = coroutine['_' .. key]
        local ours = coroutine['__' .. key]
        coroutine[key] = function (...)
            local r = get_request()
            if r ~= nil then
                local ctx = get_raw_phase(r)
                if ctx ~= 0x020 and ctx ~= 0x040 then
                    return ours(...)
                end
            end
            return std(...)
        end
    end

    package.loaded.coroutine = coroutine
end

return {
    version = base.version
}