void process() { while (!loopEnd) { if (sem_wait(semNext) == -1) { diep("sem_wait"); } if (!pbuff || !pbuff->len) { ERROR_OUT("Invalid buffer"); exit(1); } EventHandler *dest = (pbuff->destId == ClientDest) ? client : server; if (dest == NULL) { ERROR_OUT("Invalid dest"); exit(1); } dest->process(pbuff->buffer, pbuff->len, true); } }
void LibEventMain::readfn(bufferevent *bev, void *arg) { EventHandler *p = (EventHandler *) arg; INFO_OUT("Readfn %s:\n", (p ? p->getDescription() : "None")); evbuffer *input, *output; size_t n; int i; input = bufferevent_get_input(bev); char buffer[max_buff]; // // char *data = evbuffer_readln(input, &n, EVBUFFER_EOL_LF); // p->process(data, n, true); // free(data); if ((n = evbuffer_remove(input, buffer, sizeof(buffer))) > 0) { p->process(buffer, n, !n); } // Todo: What happens to the remaining buffer that is less than max_buff }