Ejemplo n.º 1
0
static void read_watcher_cb(struct upump *unused)
{
    char buffer[strlen(padding) + 1];
    ssize_t ret = read(pipefd[0], buffer, strlen(padding) + 1);
    assert(ret != -1);
    bytes_read += ret;
    if (bytes_read > MIN_READ) {
        printf("read watcher passed\n");
        upump_stop(write_idler);
        upump_stop(read_watcher);
    }
}
Ejemplo n.º 2
0
static void write_watcher_cb(struct upump *unused)
{
    printf("write watcher passed\n");
    if (blocker) {
        upump_blocker_free(blocker);
    }
    upump_stop(write_watcher);
}
Ejemplo n.º 3
0
/** @internal @This is called when the queue can be written again.
 * Unblock the sink.
 *
 * @param upump description structure of the watcher
 */
static void upipe_nacl_audio_watcher(struct upump *upump)
{
    struct upipe *upipe = upump_get_opaque(upump, struct upipe *);
    if (upipe_nacl_audio_output_input(upipe)) {
        upump_stop(upump);
    }
    upipe_nacl_audio_unblock_input(upipe);
}
Ejemplo n.º 4
0
static void write_idler_cb(struct upump *upump)
{
    if (bytes_written > MIN_READ) {
        upump_stop(upump);
        return;
    }

    ssize_t ret = write(pipefd[1], padding, strlen(padding) + 1);
    if (ret == -1 && (errno == EWOULDBLOCK || errno == EAGAIN)) {
        printf("write idler blocked\n");
        blocker = upump_blocker_alloc(write_idler, blocker_cb, NULL, NULL);
        assert(blocker != NULL);
        upump_start(write_watcher);
        upump_start(read_timer);
    } else {
        assert(ret != -1);
        bytes_written += ret;
    }
}