Пример #1
0
int cl_ctx_loop(cl_context *ctx)
{
    fd_set rset;

    if (ctx == NULL) {
        return CL_RET_NO_CONTEXT; 
    }
  
    FD_ZERO(&rset);

    for (;;) {
#ifndef _WIN32
	FD_SET(0, &rset); /* just here, to be modified if application
		                * listens on other fds
		                */
#endif
        if (cl_select(0, &rset, NULL, NULL, NULL) < 0) {
            if (errno == EINTR) {
	            continue;
            } else {
	            I3_PRINT_DEBUG0(I3_DEBUG_LEVEL_FATAL, "select_error\n");
            }
        }
    }
  return errno;
}
Пример #2
0
int 			main_loop(t_cl_prop *cl)
{
	while(1)
	{
		//printf("main_loop.\n");
		printf("===============================================================\n");
		init_fds(cl);
		cl_select(cl);
		check_fds(cl);
	}
	return (1);
}
Пример #3
0
int
cl_wait_cmd(const struct cl_cmd_t *cl_cmd, long sec, long usec, int *err)
{
    struct cl_line l;
    int i;
   
    *err = CL_ERR_SUCCESS;

    if (cl_select(sec, usec, err) < 0) 
        return -1;

    memset(&l, 0, sizeof(struct cl_line));
    
    if (cl_read(&l, err) < 0)
        return -1;

    if (0 != strcasecmp(l.mode, "CMD")) {
        *err = CL_ERR_SYNTAX;
        cl_log(CL_LOG_ERR, CL_ERR_SYNTAX);
        return -1;
    }

    for (i = 0; i < CL_CMD_MAX; i++) {
        if (NULL == cl_cmd[i].name)
            break;
        
        if (0 == strcasecmp(l.key, cl_cmd[i].name)) {
            if (cl_cmd[i].handler(l.val, err) < 0) {
                cl_log(CL_LOG_ERR, *err);
                return -1;
            }

            if (CL_ERR_SUCCESS == *err)
                cl_log(CL_LOG_INFO, CL_ERR_SUCCESS);
            else
                cl_log(CL_LOG_ERR, *err);

            return 0;
        }
    }

    cl_log(CL_LOG_ERR, CL_ERR_UNKCMD);

    return -1;
}