コード例 #1
0
ファイル: shmemsemserver.cpp プロジェクト: ahsank/EvaluateIPC
    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);
        }

    }
コード例 #2
0
ファイル: eventserver.cpp プロジェクト: ahsank/EvaluateIPC
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
}