Skip to content
Snippets Groups Projects
Unverified Commit 6ffc61dc authored by Jake Drahos's avatar Jake Drahos
Browse files

Finished new client

parent 15b9feb1
No related branches found
No related tags found
No related merge requests found
......@@ -46,6 +46,10 @@ int safe_fd_clr(int , fd_set* , int* );
static void cb(struct ucart_vrpn_TrackerData *);
static int new_client(int fd);
/* Return index of client, or -1 */
static ssize_t get_client_index(int fd);
/* Returns pointer to client buffer, or -1 */
static char * get_client_buffer(int fd);
/* Thread-safe wrappers */
pthread_mutex_t quadSocketMutex;
......@@ -63,7 +67,6 @@ const char *logHeader = "";//"#\n#\tDefault log header\n#\tEverything after '#'`
#define CLIENT_BUFFER_SIZE 1024
static char client_buffers[MAX_CLIENTS][CLIENT_BUFFER_SIZE];
static int client_fds[MAX_CLIENTS];
static size_t num_clients = 0;
pthread_mutex_t quadResponseMutex, cliInputMutex ;
unsigned char *respBuf, *commandBuf;
......@@ -426,16 +429,41 @@ static ssize_t writeQuad(const char * buf, size_t count) {
static int new_client(int fd)
{
if (num_clients >= MAX_CLIENTS) {
close(fd);
ssize_t new_slot = -1;
for (ssize_t i = 0; i < MAX_CLIENTS; i++) {
if (client_fds[i] < 0) {
new_slot = i;
break;
}
}
if (new_slot == -1) {
warnx("Ran out of room! Consider increasing MAX_CLIENTS!");
return 0;
}
num_clients++;
int new_slot;
for (size_t i = 0; i < MAX_CLIENTS; i++) {
if
}
client_fds[new_slot] = fd;
client_buffers[new_slot][0] = '\0';
return 1;
}
static ssize_t get_client_index(int fd)
{
for (ssize_t i = 0; i < MAX_CLIENTS; i++) {
if (client_fds[i] == fd) {
return i;
}
}
return -1;
}
static char * get_client_buffer(int fd)
{
ssize_t slot = get_client_index(fd);
if (slot == -1) {
return NULL;
} else {
return client_buffers[slot];
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment