diff options
author | rodri <rgl@antares-labs.eu> | 2023-02-09 21:01:00 +0000 |
---|---|---|
committer | rodri <rgl@antares-labs.eu> | 2023-02-09 21:01:00 +0000 |
commit | c1cdf0f980b92193953f05bf444b7c78f369a122 (patch) | |
tree | 8a79930693c546dde79954f467ba1cc4119c9e6b /lobby.c | |
parent | e769c8684c1200f922ff41c6ef5d0cdd4fe0e67f (diff) | |
download | musw-c1cdf0f980b92193953f05bf444b7c78f369a122.tar.gz musw-c1cdf0f980b92193953f05bf444b7c78f369a122.tar.bz2 musw-c1cdf0f980b92193953f05bf444b7c78f369a122.zip |
implemented a packet processing pipeline. got rid of Lobby. began development of a network protocol.
Diffstat (limited to 'lobby.c')
-rw-r--r-- | lobby.c | 101 |
1 files changed, 0 insertions, 101 deletions
diff --git a/lobby.c b/lobby.c deleted file mode 100644 index 7ffa969..0000000 --- a/lobby.c +++ /dev/null @@ -1,101 +0,0 @@ -#include <u.h> -#include <libc.h> -#include <ip.h> -#include <draw.h> -#include <geometry.h> -#include "dat.h" -#include "fns.h" - -static int -lobby_takeseat(Lobby *l, char *dir, int cfd, int dfd) -{ - if(l->nseats >= l->cap){ - l->cap += 8; - l->seats = erealloc(l->seats, l->cap*sizeof(*l->seats)); - } - - l->seats[l->nseats].name = nil; - memmove(l->seats[l->nseats].conn.dir, dir, sizeof l->seats[l->nseats].conn.dir); - l->seats[l->nseats].conn.ctl = cfd; - l->seats[l->nseats].conn.data = dfd; - - return l->nseats++; -} - -static int -lobby_leaveseat(Lobby *l, ulong idx) -{ - if(idx >= l->cap) - return -1; - - if(idx < l->cap - 1) - memmove(&l->seats[idx], &l->seats[idx+1], l->cap*sizeof(*l->seats) - (idx + 1)*sizeof(*l->seats)); - - return --l->nseats; -} - -static int -lobby_getcouple(Lobby *l, Player *couple) -{ - if(l->nseats >= 2){ - couple[0] = l->seats[l->nseats-2]; - couple[1] = l->seats[l->nseats-1]; - - if(l->nseats < l->cap - 2) - memmove(&l->seats[l->nseats], &l->seats[l->nseats+2], l->cap*sizeof(*l->seats) - (l->nseats + 2)*sizeof(*l->seats)); - - l->nseats -= 2; - - return 0; - } - - return -1; -} - -static void -lobby_purge(Lobby *l) -{ - char status[48], buf[16]; - int i, fd; - - for(i = 0; i < l->nseats; i++){ - snprint(status, sizeof status, "%s/status", l->seats[i].conn.dir); - - fd = open(status, OREAD); - if(fd < 0) - goto cleanup; - - if(read(fd, buf, sizeof buf) > 0) - if(strncmp(buf, "Close", 5) == 0) - goto cleanup; - else{ - close(fd); - continue; - } -cleanup: - close(fd); - l->leaveseat(l, i); - } -} - -Lobby * -newlobby(void) -{ - Lobby *l; - - l = emalloc(sizeof(Lobby)); - memset(l, 0, sizeof(Lobby)); - l->takeseat = lobby_takeseat; - l->getcouple = lobby_getcouple; - l->leaveseat = lobby_leaveseat; - l->purge = lobby_purge; - - return l; -} - -void -dellobby(Lobby *l) -{ - free(l->seats); - free(l); -} |