summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAndrew Clayton <a.clayton@nginx.com>2024-07-04 15:52:56 +0100
committerAndrew Clayton <a.clayton@nginx.com>2024-07-12 16:44:54 +0100
commit55041ef9607c073bc5e1b431ec271e9c23200cb1 (patch)
tree2ca8b1d28289672497fd961818dcfaf2129ccd14
parentc8d70c3ff28bcf18dfbcfa1332ce0f0d869c0d5f (diff)
downloadunit-55041ef9607c073bc5e1b431ec271e9c23200cb1.tar.gz
unit-55041ef9607c073bc5e1b431ec271e9c23200cb1.tar.bz2
Flow the language module name into nxt_app_lang_module_t
The nxt_app_lang_module_t structure contains various bits of information as obtained from the nxt_app_module_t structure that language modules define. One bit of information that is in the nxt_app_module_t but not in the nxt_app_lang_module_t is the language module name. Having this name flowed through will be useful for displaying the loaded language modules in the /status endpoint. Signed-off-by: Andrew Clayton <a.clayton@nginx.com>
-rw-r--r--src/nxt_application.c15
-rw-r--r--src/nxt_application.h1
-rw-r--r--src/nxt_main_process.c6
3 files changed, 19 insertions, 3 deletions
diff --git a/src/nxt_application.c b/src/nxt_application.c
index e0247bf0..629aa11c 100644
--- a/src/nxt_application.c
+++ b/src/nxt_application.c
@@ -32,6 +32,7 @@
typedef struct {
nxt_app_type_t type;
+ nxt_str_t name;
nxt_str_t version;
nxt_str_t file;
nxt_array_t *mounts;
@@ -257,12 +258,14 @@ nxt_discovery_modules(nxt_task_t *task, const char *path)
module[i].type, &module[i].version, &module[i].file);
size += nxt_length("{\"type\": ,");
+ size += nxt_length(" \"name\": \"\",");
size += nxt_length(" \"version\": \"\",");
size += nxt_length(" \"file\": \"\",");
size += nxt_length(" \"mounts\": []},");
size += NXT_INT_T_LEN
+ module[i].version.length
+ + module[i].name.length
+ module[i].file.length;
mounts = module[i].mounts;
@@ -294,9 +297,10 @@ nxt_discovery_modules(nxt_task_t *task, const char *path)
for (i = 0; i < n; i++) {
mounts = module[i].mounts;
- p = nxt_sprintf(p, end, "{\"type\": %d, \"version\": \"%V\", "
- "\"file\": \"%V\", \"mounts\": [",
- module[i].type, &module[i].version, &module[i].file);
+ p = nxt_sprintf(p, end, "{\"type\": %d, \"name\": \"%V\", "
+ "\"version\": \"%V\", \"file\": \"%V\", \"mounts\": [",
+ module[i].type, &module[i].name, &module[i].version,
+ &module[i].file);
mnt = mounts->elts;
for (j = 0; j < mounts->nelts; j++) {
@@ -412,6 +416,11 @@ nxt_discovery_module(nxt_task_t *task, nxt_mp_t *mp, nxt_array_t *modules,
goto fail;
}
+ nxt_str_dup(mp, &module->name, &app->type);
+ if (module->name.start == NULL) {
+ goto fail;
+ }
+
module->file.length = nxt_strlen(name);
module->file.start = nxt_mp_alloc(mp, module->file.length);
diff --git a/src/nxt_application.h b/src/nxt_application.h
index f5d7a9df..a3b4230a 100644
--- a/src/nxt_application.h
+++ b/src/nxt_application.h
@@ -35,6 +35,7 @@ typedef nxt_int_t (*nxt_application_setup_t)(nxt_task_t *task,
typedef struct {
nxt_app_type_t type;
+ char *name;
u_char *version;
char *file;
nxt_app_module_t *module;
diff --git a/src/nxt_main_process.c b/src/nxt_main_process.c
index c302cb02..00318226 100644
--- a/src/nxt_main_process.c
+++ b/src/nxt_main_process.c
@@ -1355,6 +1355,12 @@ static nxt_conf_map_t nxt_app_lang_module_map[] = {
},
{
+ nxt_string("name"),
+ NXT_CONF_MAP_CSTRZ,
+ offsetof(nxt_app_lang_module_t, name),
+ },
+
+ {
nxt_string("version"),
NXT_CONF_MAP_CSTRZ,
offsetof(nxt_app_lang_module_t, version),