Skip to content

Commit 67ac13b

Browse files
committed
feature: enabled the FFI-based API for 'ngx.var' in the stream subsystem.
1 parent 5fec393 commit 67ac13b

File tree

2 files changed

+41
-14
lines changed

2 files changed

+41
-14
lines changed

lib/resty/core.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ local subsystem = ngx.config.subsystem
44

55

66
require "resty.core.ctx"
7+
require "resty.core.var"
78
require "resty.core.regex"
89
require "resty.core.shdict"
910
require "resty.core.time"
@@ -15,7 +16,6 @@ require "resty.core.base64"
1516

1617

1718
if subsystem == 'http' then
18-
require "resty.core.var"
1919
require "resty.core.request"
2020
require "resty.core.response"
2121
require "resty.core.worker"

lib/resty/core/var.lua

Lines changed: 40 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,36 @@
11
-- Copyright (C) Yichun Zhang (agentzh)
22

33

4-
local ffi = require 'ffi'
4+
local ffi = require "ffi"
55
local base = require "resty.core.base"
66

7+
8+
local C = ffi.C
79
local ffi_new = ffi.new
810
local ffi_str = ffi.string
9-
local C = ffi.C
1011
local type = type
12+
local error = error
13+
local tostring = tostring
14+
local setmetatable = setmetatable
1115
local get_request = base.get_request
1216
local get_string_buf = base.get_string_buf
1317
local get_size_ptr = base.get_size_ptr
1418
local new_tab = base.new_tab
15-
local error = error
16-
local tostring = tostring
17-
local setmetatable = setmetatable
19+
local subsystem = ngx.config.subsystem
20+
21+
22+
local ngx_lua_ffi_var_get
23+
local ngx_lua_ffi_var_set
24+
1825

1926
local ERR_BUF_SIZE = 256
2027

2128

2229
ngx.var = new_tab(0, 0)
2330

2431

25-
ffi.cdef[[
32+
if subsystem == "http" then
33+
ffi.cdef[[
2634
int ngx_http_lua_ffi_var_get(ngx_http_request_t *r,
2735
const char *name_data, size_t name_len, char *lowcase_buf,
2836
int capture_id, char **value, size_t *value_len, char **err);
@@ -31,7 +39,26 @@ ffi.cdef[[
3139
const unsigned char *name_data, size_t name_len,
3240
unsigned char *lowcase_buf, const unsigned char *value,
3341
size_t value_len, unsigned char *errbuf, size_t *errlen);
34-
]]
42+
]]
43+
44+
ngx_lua_ffi_var_get = C.ngx_http_lua_ffi_var_get
45+
ngx_lua_ffi_var_set = C.ngx_http_lua_ffi_var_set
46+
47+
elseif subsystem == "stream" then
48+
ffi.cdef[[
49+
int ngx_stream_lua_ffi_var_get(ngx_stream_lua_request_t *r,
50+
const char *name_data, size_t name_len, char *lowcase_buf,
51+
int capture_id, char **value, size_t *value_len, char **err);
52+
53+
int ngx_stream_lua_ffi_var_set(ngx_stream_lua_request_t *r,
54+
const unsigned char *name_data, size_t name_len,
55+
unsigned char *lowcase_buf, const unsigned char *value,
56+
size_t value_len, unsigned char *errbuf, size_t *errlen);
57+
]]
58+
59+
ngx_lua_ffi_var_get = C.ngx_stream_lua_ffi_var_get
60+
ngx_lua_ffi_var_set = C.ngx_stream_lua_ffi_var_set
61+
end
3562

3663

3764
local value_ptr = ffi_new("unsigned char *[1]")
@@ -47,8 +74,8 @@ local function var_get(self, name)
4774
local value_len = get_size_ptr()
4875
local rc
4976
if type(name) == "number" then
50-
rc = C.ngx_http_lua_ffi_var_get(r, nil, 0, nil, name, value_ptr,
51-
value_len, errmsg)
77+
rc = ngx_lua_ffi_var_get(r, nil, 0, nil, name, value_ptr, value_len,
78+
errmsg)
5279

5380
else
5481
if type(name) ~= "string" then
@@ -58,8 +85,8 @@ local function var_get(self, name)
5885
local name_len = #name
5986
local lowcase_buf = get_string_buf(name_len)
6087

61-
rc = C.ngx_http_lua_ffi_var_get(r, name, name_len, lowcase_buf, 0,
62-
value_ptr, value_len, errmsg)
88+
rc = ngx_lua_ffi_var_get(r, name, name_len, lowcase_buf, 0, value_ptr,
89+
value_len, errmsg)
6390
end
6491

6592
-- ngx.log(ngx.WARN, "rc = ", rc)
@@ -104,8 +131,8 @@ local function var_set(self, name, value)
104131
end
105132

106133
local errbuf = lowcase_buf + name_len
107-
local rc = C.ngx_http_lua_ffi_var_set(r, name, name_len, lowcase_buf,
108-
value, value_len, errbuf, errlen)
134+
local rc = ngx_lua_ffi_var_set(r, name, name_len, lowcase_buf, value,
135+
value_len, errbuf, errlen)
109136

110137
-- ngx.log(ngx.WARN, "rc = ", rc)
111138

0 commit comments

Comments
 (0)