summaryrefslogtreecommitdiff
path: root/server
diff options
context:
space:
mode:
authorDanny Holman <dholman@gymli.org>2023-05-14 19:38:32 -0500
committerDanny Holman <dholman@gymli.org>2023-05-14 19:38:32 -0500
commit4cfbfca2ff1d2ef2d4fe69314cff460727cc5ce4 (patch)
treef2a90d791240a92b1630e79e8304b187df985cfa /server
parent4628add1b72367646634e66f71bcb2191e1b46a5 (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>
Diffstat (limited to 'server')
-rw-r--r--server/include/session.h1
-rw-r--r--server/src/session.c14
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;
+}