summaryrefslogtreecommitdiffhomepage
path: root/src/nxt_port_hash.c
diff options
context:
space:
mode:
authorMax Romanov <max.romanov@nginx.com>2017-10-04 14:57:56 +0300
committerMax Romanov <max.romanov@nginx.com>2017-10-04 14:57:56 +0300
commitba311997866a4c2ef6ceeaac846832a85bd86f17 (patch)
tree74c268496a856065eec13b57db2a5158da2b6cd1 /src/nxt_port_hash.c
parent4ae76249edb97775be8a0c749ad9ee79e3e85393 (diff)
downloadunit-ba311997866a4c2ef6ceeaac846832a85bd86f17.tar.gz
unit-ba311997866a4c2ef6ceeaac846832a85bd86f17.tar.bz2
Removing mem_pool from port_hash interface.
Memory pool is not used by port_hash and it was a mistake to pass it into 'add' and 'remove' functions. port_hash enrties are allocated from heap.
Diffstat (limited to 'src/nxt_port_hash.c')
-rw-r--r--src/nxt_port_hash.c38
1 files changed, 16 insertions, 22 deletions
diff --git a/src/nxt_port_hash.c b/src/nxt_port_hash.c
index 93e46cd3..c23bcbc6 100644
--- a/src/nxt_port_hash.c
+++ b/src/nxt_port_hash.c
@@ -52,9 +52,19 @@ nxt_port_hash_first(nxt_lvlhsh_t *port_hash, nxt_lvlhsh_each_t *lhe)
}
+nxt_inline void
+nxt_port_hash_lhq(nxt_lvlhsh_query_t *lhq, nxt_pid_port_id_t *pid_port)
+{
+ lhq->key_hash = nxt_murmur_hash2(pid_port, sizeof(nxt_pid_port_id_t));
+ lhq->key.length = sizeof(nxt_pid_port_id_t);
+ lhq->key.start = (u_char *) pid_port;
+ lhq->proto = &lvlhsh_ports_proto;
+ lhq->pool = NULL;
+}
+
+
void
-nxt_port_hash_add(nxt_lvlhsh_t *port_hash, nxt_mp_t *mem_pool,
- nxt_port_t *port)
+nxt_port_hash_add(nxt_lvlhsh_t *port_hash, nxt_port_t *port)
{
nxt_pid_port_id_t pid_port;
nxt_lvlhsh_query_t lhq;
@@ -62,13 +72,9 @@ nxt_port_hash_add(nxt_lvlhsh_t *port_hash, nxt_mp_t *mem_pool,
pid_port.pid = port->pid;
pid_port.port_id = port->id;
- lhq.key_hash = nxt_murmur_hash2(&pid_port, sizeof(pid_port));
- lhq.key.length = sizeof(pid_port);
- lhq.key.start = (u_char *) &pid_port;
- lhq.proto = &lvlhsh_ports_proto;
+ nxt_port_hash_lhq(&lhq, &pid_port);
lhq.replace = 0;
lhq.value = port;
- lhq.pool = mem_pool;
switch (nxt_lvlhsh_insert(port_hash, &lhq)) {
@@ -84,8 +90,7 @@ nxt_port_hash_add(nxt_lvlhsh_t *port_hash, nxt_mp_t *mem_pool,
void
-nxt_port_hash_remove(nxt_lvlhsh_t *port_hash, nxt_mp_t *mem_pool,
- nxt_port_t *port)
+nxt_port_hash_remove(nxt_lvlhsh_t *port_hash, nxt_port_t *port)
{
nxt_pid_port_id_t pid_port;
nxt_lvlhsh_query_t lhq;
@@ -93,13 +98,7 @@ nxt_port_hash_remove(nxt_lvlhsh_t *port_hash, nxt_mp_t *mem_pool,
pid_port.pid = port->pid;
pid_port.port_id = port->id;
- lhq.key_hash = nxt_murmur_hash2(&pid_port, sizeof(pid_port));
- lhq.key.length = sizeof(pid_port);
- lhq.key.start = (u_char *) &pid_port;
- lhq.proto = &lvlhsh_ports_proto;
- lhq.replace = 0;
- lhq.value = port;
- lhq.pool = mem_pool;
+ nxt_port_hash_lhq(&lhq, &pid_port);
switch (nxt_lvlhsh_delete(port_hash, &lhq)) {
@@ -122,12 +121,7 @@ nxt_port_hash_find(nxt_lvlhsh_t *port_hash, nxt_pid_t pid,
pid_port.pid = pid;
pid_port.port_id = port_id;
- lhq.key_hash = nxt_murmur_hash2(&pid_port, sizeof(pid_port));
- lhq.key.length = sizeof(pid_port);
- lhq.key.start = (u_char *) &pid_port;
- lhq.proto = &lvlhsh_ports_proto;
-
- /* TODO lock ports */
+ nxt_port_hash_lhq(&lhq, &pid_port);
if (nxt_lvlhsh_find(port_hash, &lhq) == NXT_OK) {
nxt_thread_log_debug("process port (%PI, %d) found", pid, port_id);