server: Convert seat list to linked_list
This commit is contained in:
parent
7d88315fea
commit
d75b617faf
3 changed files with 10 additions and 10 deletions
|
@ -26,6 +26,7 @@ struct seat_device {
|
|||
};
|
||||
|
||||
struct seat {
|
||||
struct linked_list link; // server::seats
|
||||
char *seat_name;
|
||||
struct linked_list clients;
|
||||
struct client *active_client;
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
#include <stdbool.h>
|
||||
|
||||
#include "list.h"
|
||||
#include "linked_list.h"
|
||||
#include "poller.h"
|
||||
|
||||
struct client;
|
||||
|
@ -12,7 +12,7 @@ struct server {
|
|||
bool running;
|
||||
struct poller poller;
|
||||
|
||||
struct list seats;
|
||||
struct linked_list seats;
|
||||
};
|
||||
|
||||
int server_init(struct server *server);
|
||||
|
|
|
@ -12,7 +12,6 @@
|
|||
#include <unistd.h>
|
||||
|
||||
#include "client.h"
|
||||
#include "list.h"
|
||||
#include "log.h"
|
||||
#include "poller.h"
|
||||
#include "seat.h"
|
||||
|
@ -26,7 +25,7 @@ static int server_handle_kill(int signal, void *data);
|
|||
int server_init(struct server *server) {
|
||||
poller_init(&server->poller);
|
||||
|
||||
list_init(&server->seats);
|
||||
linked_list_init(&server->seats);
|
||||
|
||||
if (poller_add_signal(&server->poller, SIGUSR1, server_handle_vt_rel, server) == NULL ||
|
||||
poller_add_signal(&server->poller, SIGUSR2, server_handle_vt_acq, server) == NULL ||
|
||||
|
@ -45,24 +44,24 @@ int server_init(struct server *server) {
|
|||
return -1;
|
||||
}
|
||||
|
||||
list_add(&server->seats, seat);
|
||||
linked_list_insert(&server->seats, &seat->link);
|
||||
server->running = true;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void server_finish(struct server *server) {
|
||||
assert(server);
|
||||
for (size_t idx = 0; idx < server->seats.length; idx++) {
|
||||
struct seat *seat = server->seats.items[idx];
|
||||
while (!linked_list_empty(&server->seats)) {
|
||||
struct seat *seat = (struct seat *)server->seats.next;
|
||||
seat_destroy(seat);
|
||||
}
|
||||
list_free(&server->seats);
|
||||
poller_finish(&server->poller);
|
||||
}
|
||||
|
||||
struct seat *server_get_seat(struct server *server, const char *seat_name) {
|
||||
for (size_t idx = 0; idx < server->seats.length; idx++) {
|
||||
struct seat *seat = server->seats.items[idx];
|
||||
for (struct linked_list *elem = server->seats.next; elem != &server->seats;
|
||||
elem = elem->next) {
|
||||
struct seat *seat = (struct seat *)elem;
|
||||
if (strcmp(seat->seat_name, seat_name) == 0) {
|
||||
return seat;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue