diff options
author | Danny Holman <dholman@gymli.org> | 2023-05-14 19:38:32 -0500 |
---|---|---|
committer | Danny Holman <dholman@gymli.org> | 2023-05-14 19:38:32 -0500 |
commit | 4cfbfca2ff1d2ef2d4fe69314cff460727cc5ce4 (patch) | |
tree | f2a90d791240a92b1630e79e8304b187df985cfa | |
parent | 4628add1b72367646634e66f71bcb2191e1b46a5 (diff) |
server: session: add function returning sessions
Add a function that returns the number of current sessions.
Signed-off-by: Danny Holman <dholman@gymli.org>
-rw-r--r-- | server/include/session.h | 1 | ||||
-rw-r--r-- | server/src/session.c | 14 |
2 files changed, 15 insertions, 0 deletions
diff --git a/server/include/session.h b/server/include/session.h index 4e9d646..5032a3a 100644 --- a/server/include/session.h +++ b/server/include/session.h @@ -14,5 +14,6 @@ int init_session(int socket); struct session* find_session(int id); int write_session(int id, const char *data, size_t size); size_t read_session(int id, char *data, size_t size); +int num_alive_sessions(void); #endif diff --git a/server/src/session.c b/server/src/session.c index 8955ff9..70a1cf1 100644 --- a/server/src/session.c +++ b/server/src/session.c @@ -12,6 +12,7 @@ int init_session(int socket) { ses->id = next_id; next_id++; ses->socket = socket; + ses->alive = 1; list_add(&ses->list, &sessions); return ses->id; } @@ -39,3 +40,16 @@ size_t read_session(int id, char *data, size_t size) { return -1; return read(ses->socket, data, size); } + +int num_alive_sessions(void) { + int ret = 0; + + struct list_head *temp = sessions.next; + while (temp != NULL) { + if (container_of(temp, struct session, list)->alive == 1) + ret++; + temp = temp->next; + } + + return ret; +} |