diff options
author | Tiago Cunha <tcunha@gmx.com> | 2009-11-08 22:56:04 +0000 |
---|---|---|
committer | Tiago Cunha <tcunha@gmx.com> | 2009-11-08 22:56:04 +0000 |
commit | 53ef4c2babc3d4bf8df16ba6bbd596d0b9a8240b (patch) | |
tree | 286476b1c81ce35d95e0cedce4dee1a728bfa5fb /server-job.c | |
parent | 5116aaa51a6059904a6b8ae75bffa77c95ceb41a (diff) | |
download | rtmux-53ef4c2babc3d4bf8df16ba6bbd596d0b9a8240b.tar.gz rtmux-53ef4c2babc3d4bf8df16ba6bbd596d0b9a8240b.tar.bz2 rtmux-53ef4c2babc3d4bf8df16ba6bbd596d0b9a8240b.zip |
Sync OpenBSD patchset 493:
Switch jobs over to use a bufferevent.
Diffstat (limited to 'server-job.c')
-rw-r--r-- | server-job.c | 77 |
1 files changed, 0 insertions, 77 deletions
diff --git a/server-job.c b/server-job.c deleted file mode 100644 index 79ee9d50..00000000 --- a/server-job.c +++ /dev/null @@ -1,77 +0,0 @@ -/* $Id: server-job.c,v 1.4 2009-11-08 22:40:36 tcunha Exp $ */ - -/* - * Copyright (c) 2009 Nicholas Marriott <nicm@users.sourceforge.net> - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER - * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING - * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -#include <sys/types.h> - -#include <event.h> -#include <unistd.h> - -#include "tmux.h" - -/* Register jobs for poll. */ -void -server_job_prepare(void) -{ - struct job *job; - - SLIST_FOREACH(job, &all_jobs, lentry) { - if (job->fd == -1) - continue; - event_del(&job->event); - event_set( - &job->event, job->fd, EV_READ, server_job_callback, job); - event_add(&job->event, NULL); - } -} - -/* Process a single job event. */ -void -server_job_callback(int fd, short events, void *data) -{ - struct job *job = data; - - if (job->fd == -1) - return; - - if (buffer_poll(fd, events, job->out, NULL) != 0) { - close(job->fd); - job->fd = -1; - } -} - -/* Job functions that happen once a loop. */ -void -server_job_loop(void) -{ - struct job *job; - -restart: - SLIST_FOREACH(job, &all_jobs, lentry) { - if (job->flags & JOB_DONE || job->fd != -1 || job->pid != -1) - continue; - job->flags |= JOB_DONE; - - if (job->callbackfn != NULL) { - job->callbackfn(job); - if ((!job->flags & JOB_PERSIST)) { - job_free(job); - goto restart; - } - } - } -} |