GCC Code Coverage Report


Directory: src/
File: src/worker_queue.c
Date: 2026-07-25 13:42:22
Exec Total Coverage
Lines: 32 37 86.5%
Functions: 8 9 88.9%
Branches: 5 10 50.0%

Line Branch Exec Source
1 /*
2 * Copyright (c) 2023 Egor Tensin <egor@tensin.name>
3 * This file is part of the "cimple" project.
4 * For details, see https://github.com/egor-tensin/cimple.
5 * Distributed under the MIT License.
6 */
7
8 #include "worker_queue.h"
9
10 #include "log.h"
11 #include "net.h"
12
13 #include <stdlib.h>
14 #include <sys/queue.h>
15
16 struct worker {
17 int fd;
18 SIMPLEQ_ENTRY(worker) entries;
19 };
20
21 9234 int worker_create(struct worker** _entry, int fd) {
22 9234 struct worker* entry = malloc(sizeof(struct worker));
23
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 9234 times.
9234 if (!entry) {
24 log_errno("malloc");
25 return -1;
26 }
27
28 9234 entry->fd = fd;
29
30 9234 *_entry = entry;
31 9234 return 0;
32 }
33
34 9234 void worker_destroy(struct worker* entry) {
35 9234 net_close(entry->fd);
36 9234 free(entry);
37 9234 }
38
39 36774 int worker_get_fd(const struct worker* entry) {
40 36774 return entry->fd;
41 }
42
43 29 void worker_queue_create(struct worker_queue* queue) {
44 29 SIMPLEQ_INIT(queue);
45 29 }
46
47 29 void worker_queue_destroy(struct worker_queue* queue) {
48 29 struct worker* entry1 = SIMPLEQ_FIRST(queue);
49
2/2
✓ Branch 0 taken 54 times.
✓ Branch 1 taken 29 times.
83 while (entry1) {
50 54 struct worker* entry2 = SIMPLEQ_NEXT(entry1, entries);
51 54 worker_destroy(entry1);
52 54 entry1 = entry2;
53 }
54 29 SIMPLEQ_INIT(queue);
55 29 }
56
57 27156 int worker_queue_is_empty(const struct worker_queue* queue) {
58 27156 return SIMPLEQ_EMPTY(queue);
59 }
60
61 void worker_queue_add_first(struct worker_queue* queue, struct worker* entry) {
62 SIMPLEQ_INSERT_HEAD(queue, entry, entries);
63 }
64
65 9234 void worker_queue_add_last(struct worker_queue* queue, struct worker* entry) {
66 9234 SIMPLEQ_INSERT_TAIL(queue, entry, entries);
67 9234 }
68
69 9180 struct worker* worker_queue_remove_first(struct worker_queue* queue) {
70 9180 struct worker* entry = SIMPLEQ_FIRST(queue);
71
2/2
✓ Branch 0 taken 9060 times.
✓ Branch 1 taken 120 times.
9180 SIMPLEQ_REMOVE_HEAD(queue, entries);
72 9180 return entry;
73 }
74