mirror of
https://github.com/redis/redis.git
synced 2026-05-28 04:02:46 -04:00
Move clientSetUser() to acl.c, rename vecFindIndexOf to vecIndexOf
Move clientSetUser() from a static inline in server.h to a regular function in acl.c alongside other user-management functions. The function has side-effect logic and is expected to grow; Rename vecFindIndexOf() to vecIndexOf() for brevity and consistency with standard container APIs.
This commit is contained in:
parent
cadce84439
commit
52fed302ca
5 changed files with 25 additions and 21 deletions
|
|
@ -523,6 +523,14 @@ void ACLCopyUser(user *dst, user *src) {
|
|||
}
|
||||
}
|
||||
|
||||
/* Set the user for a client, performing any necessary bookkeeping such as
|
||||
* updating broadcast tracking state for the user switch. */
|
||||
void clientSetUser(client *c, user *new_user) {
|
||||
user *old = c->user;
|
||||
c->user = new_user;
|
||||
trackingBroadcastPostUserSwitch(c, old);
|
||||
}
|
||||
|
||||
/* Given a command ID, this function set by reference 'word' and 'bit'
|
||||
* so that user->allowed_commands[word] will address the right word
|
||||
* where the corresponding bit for the provided ID is stored, and
|
||||
|
|
|
|||
|
|
@ -3362,11 +3362,7 @@ uint64_t trackingGetTotalKeys(void);
|
|||
uint64_t trackingGetTotalPrefixes(void);
|
||||
void trackingBroadcastInvalidationMessages(void);
|
||||
void trackingBroadcastPostUserSwitch(client *c, user *old_user);
|
||||
static inline void clientSetUser(client *c, user *new_user) {
|
||||
user *old = c->user;
|
||||
c->user = new_user;
|
||||
trackingBroadcastPostUserSwitch(c, old);
|
||||
}
|
||||
void clientSetUser(client *c, user *new_user);
|
||||
int checkPrefixCollisionsOrReply(client *c, robj **prefix, size_t numprefix);
|
||||
|
||||
/* List data type */
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@ void disableTracking(client *c) {
|
|||
(unsigned char*)&c->user, sizeof(c->user),
|
||||
(void**)&user_clients);
|
||||
serverAssert(found);
|
||||
ssize_t idx = vecFindIndexOf(user_clients, c);
|
||||
ssize_t idx = vecIndexOf(user_clients, c);
|
||||
serverAssert(idx >= 0);
|
||||
vecSwapRemoveAt(user_clients, idx);
|
||||
if (vecSize(user_clients) == 0) {
|
||||
|
|
@ -181,7 +181,7 @@ static void enableBcastTrackingForPrefix(client *c, char *prefix, size_t plen) {
|
|||
user_clients, NULL);
|
||||
}
|
||||
|
||||
if (vecFindIndexOf(user_clients, c) < 0) {
|
||||
if (vecIndexOf(user_clients, c) < 0) {
|
||||
vecPush(user_clients, c);
|
||||
if (c->client_tracking_prefixes == NULL)
|
||||
c->client_tracking_prefixes = raxNew();
|
||||
|
|
@ -714,7 +714,7 @@ static void trackingBcastMoveClient(client *c, user *old_user) {
|
|||
(unsigned char*)&old_user, sizeof(old_user),
|
||||
(void**)&from_clients);
|
||||
serverAssert(found);
|
||||
ssize_t idx = vecFindIndexOf(from_clients, c);
|
||||
ssize_t idx = vecIndexOf(from_clients, c);
|
||||
serverAssert(idx >= 0);
|
||||
vecSwapRemoveAt(from_clients, idx);
|
||||
if (vecSize(from_clients) == 0) {
|
||||
|
|
|
|||
24
src/vector.c
24
src/vector.c
|
|
@ -101,7 +101,7 @@ void vecPush(vec *v, void *value) {
|
|||
}
|
||||
|
||||
/* Return the index of the first occurrence of 'elem', or -1 if not found. */
|
||||
ssize_t vecFindIndexOf(const vec *v, void *elem) {
|
||||
ssize_t vecIndexOf(const vec *v, void *elem) {
|
||||
for (size_t i = 0; i < v->size; i++) {
|
||||
if (v->data[i] == elem) return (ssize_t)i;
|
||||
}
|
||||
|
|
@ -236,21 +236,21 @@ int vectorTest(int argc, char **argv, int flags)
|
|||
vecRelease(&v);
|
||||
test_cond("vecRelease() free method is a no-op on empty vector",
|
||||
vecTestFreeCalls == 0);
|
||||
/* vecFindIndexOf tests */
|
||||
/* vecIndexOf tests */
|
||||
vecInit(&v, NULL, 0);
|
||||
test_cond("vecFindIndexOf() returns -1 on empty vector",
|
||||
vecFindIndexOf(&v, &one) == -1);
|
||||
test_cond("vecIndexOf() returns -1 on empty vector",
|
||||
vecIndexOf(&v, &one) == -1);
|
||||
vecPush(&v, &one);
|
||||
vecPush(&v, &two);
|
||||
vecPush(&v, &three);
|
||||
test_cond("vecFindIndexOf() finds first element",
|
||||
vecFindIndexOf(&v, &one) == 0);
|
||||
test_cond("vecFindIndexOf() finds middle element",
|
||||
vecFindIndexOf(&v, &two) == 1);
|
||||
test_cond("vecFindIndexOf() finds last element",
|
||||
vecFindIndexOf(&v, &three) == 2);
|
||||
test_cond("vecFindIndexOf() returns -1 for missing element",
|
||||
vecFindIndexOf(&v, &four) == -1);
|
||||
test_cond("vecIndexOf() finds first element",
|
||||
vecIndexOf(&v, &one) == 0);
|
||||
test_cond("vecIndexOf() finds middle element",
|
||||
vecIndexOf(&v, &two) == 1);
|
||||
test_cond("vecIndexOf() finds last element",
|
||||
vecIndexOf(&v, &three) == 2);
|
||||
test_cond("vecIndexOf() returns -1 for missing element",
|
||||
vecIndexOf(&v, &four) == -1);
|
||||
vecRelease(&v);
|
||||
|
||||
/* vecSwapRemoveAt tests */
|
||||
|
|
|
|||
|
|
@ -98,7 +98,7 @@ void vecReserve(vec *v, size_t mincap);
|
|||
void vecPush(vec *v, void *value);
|
||||
|
||||
/* Return the index of the first occurrence of 'elem', or -1 if not found. */
|
||||
ssize_t vecFindIndexOf(const vec *v, void *elem);
|
||||
ssize_t vecIndexOf(const vec *v, void *elem);
|
||||
|
||||
/* Remove the element at 'index' by swapping with the last element.
|
||||
* Does not invoke the free callback. Requires index < vecSize(v). */
|
||||
|
|
|
|||
Loading…
Reference in a new issue