Example #1
0
int
main(int argc, char *argv[])
{
	tty_mode(0);
	set_cr_noecho_mode();
	initscr();
	clear();


	signal(SIGINT, sigint_handler);
	signal(SIGIO, on_input);	/* install input handler */
	setup_aio_buffer();		/* initialize aio ctrl buff */
	aio_read(&kbcbuf);		/* place a read request */

	signal(SIGALRM, on_alarm);	/* install alarm handler */
	set_ticker(delay);		/* start ticking */


	move(row, col);
	addstr(MSG);


	while (!done) {
		pause();
	}

	tty_mode(1);
	endwin();

	return 0;
}
Example #2
0
static VALUE
control_block_nbytes_set(VALUE cb, VALUE bytes)
{
    rb_aiocb_t *cbs = GetCBStruct(cb);
    Check_Type(bytes, T_FIXNUM);
    cbs->cb.aio_nbytes = FIX2INT(bytes);
    setup_aio_buffer(cbs);
    return bytes;
}
Example #3
0
static VALUE
control_block_buf_set(VALUE cb, VALUE buf)
{
    rb_aiocb_t *cbs = GetCBStruct(cb);
    Check_Type(buf, T_STRING);
    cbs->cb.aio_nbytes = RSTRING_LEN(buf);
    setup_aio_buffer(cbs);
    cbs->cb.aio_buf = RSTRING_PTR(buf);
    return buf;
}
Example #4
0
static void
rb_aio_lio_listio0(int mode, VALUE *cbs, aiocb_t **list, int ops)
{
    int op;
    bzero((char *)list, sizeof(list));
    for (op=0; op < ops; op++) {
        rb_aiocb_t *cb = GetCBStruct(RARRAY_PTR(cbs)[op]);
        setup_aio_buffer(cb);
        if (rb_block_given_p()){
          cb->rcb = rb_block_proc();
        } 
      list[op] = &cb->cb;
    }
}
Example #5
0
static void
control_block_reset0(rb_aiocb_t *cbs)
{    
    bzero((char *)cbs, sizeof(rb_aiocb_t));
    bzero((char *)&cbs->cb, sizeof(aiocb_t));
    /* cleanup with rb_io_close(cb->io) */
    cbs->io = Qnil;
    cbs->rcb = Qnil;
    cbs->bufsize = 1;
    cbs->err = 0;
    cbs->cb.aio_fildes = 0; 
    cbs->cb.aio_buf = NULL; 
    cbs->cb.aio_nbytes = 0;
    cbs->cb.aio_offset = 0;
    cbs->cb.aio_reqprio = 0;
    cbs->cb.aio_lio_opcode = LIO_READ;
    cbs->cb.aio_sigevent.sigev_notify = SIGEV_SIGNAL;
    cbs->cb.aio_sigevent.sigev_signo = SIGIO;
    cbs->cb.aio_sigevent.sigev_value.sival_int = 12;
    setup_aio_buffer(cbs);
}