]> git.kaiwu.me - njs.git/commitdiff
Modules: introduced ngx.worker_id.
authorDmitry Volyntsev <xeioex@nginx.com>
Fri, 30 Jun 2023 03:44:14 +0000 (20:44 -0700)
committerDmitry Volyntsev <xeioex@nginx.com>
Fri, 30 Jun 2023 03:44:14 +0000 (20:44 -0700)
worker_id corresponds to an nginx internal worker id.
The value is between 0 and worker_processes - 1.

nginx/ngx_js.c
ts/ngx_core.d.ts

index 27800f31cfb2e85d2c28425aa86aa9a199098f1b..8973f9f6e61dd5defcc9ada6bd50e8aee1d40bb7 100644 (file)
@@ -25,6 +25,8 @@ static njs_int_t ngx_js_ext_prefix(njs_vm_t *vm, njs_object_prop_t *prop,
     njs_value_t *value, njs_value_t *setval, njs_value_t *retval);
 static njs_int_t ngx_js_ext_version(njs_vm_t *vm, njs_object_prop_t *prop,
     njs_value_t *value, njs_value_t *setval, njs_value_t *retval);
+static njs_int_t ngx_js_ext_worker_id(njs_vm_t *vm, njs_object_prop_t *prop,
+    njs_value_t *value, njs_value_t *setval, njs_value_t *retval);
 static void ngx_js_cleanup_vm(void *data);
 
 static njs_int_t ngx_js_core_init(njs_vm_t *vm);
@@ -149,6 +151,15 @@ static njs_external_t  ngx_js_ext_core[] = {
         }
     },
 
+    {
+        .flags = NJS_EXTERN_PROPERTY,
+        .name.string = njs_str("worker_id"),
+        .enumerable = 1,
+        .u.property = {
+            .handler = ngx_js_ext_worker_id,
+        }
+    },
+
 };
 
 
@@ -452,6 +463,15 @@ ngx_js_ext_version(njs_vm_t *vm, njs_object_prop_t *prop, njs_value_t *value,
 }
 
 
+njs_int_t
+ngx_js_ext_worker_id(njs_vm_t *vm, njs_object_prop_t *prop, njs_value_t *value,
+    njs_value_t *setval, njs_value_t *retval)
+{
+    njs_value_number_set(retval, ngx_worker);
+    return NJS_OK;
+}
+
+
 njs_int_t
 ngx_js_ext_log(njs_vm_t *vm, njs_value_t *args, njs_uint_t nargs,
     njs_index_t level, njs_value_t *retval)
index 02aa6a41f585cc870a4a8c1ca40fa6bdf153fa62..42fce1b62e4d3f633e763bcccc3ce37039360a23 100644 (file)
@@ -311,6 +311,12 @@ interface NgxObject {
      * @since 0.5.1
      */
     readonly WARN: number;
+    /**
+     * A number corresponding to the current worker process id.
+     * Can have values from 0 to worker_processes - 1.
+     * @since 0.8.0
+     */
+    readonly worker_id: number;
 
 }