From 4cfbfca2ff1d2ef2d4fe69314cff460727cc5ce4 Mon Sep 17 00:00:00 2001 From: Danny Holman Date: Sun, 14 May 2023 19:38:32 -0500 Subject: server: session: add function returning sessions Add a function that returns the number of current sessions. Signed-off-by: Danny Holman --- server/include/session.h | 1 + server/src/session.c | 14 ++++++++++++++ 2 files changed, 15 insertions(+) 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; +} -- cgit v1.2.3