Example #1
0
void
fill_ev_table(char *input) {
	char *str1, *str2, *str3, *str4,
		 *token, *subtoken, *kommatoken, *dptoken;
	char *saveptr1=NULL, 
		 *saveptr2=NULL, 
		 *saveptr3=NULL, 
		 *saveptr4=NULL;
	int j, i=0, k=0;
	long eid=0;
	handlerf *ah=0;

	for (j = 1, str1 = input; ; j++, str1 = NULL) {
		token = strtok_r(str1, ";", &saveptr1);
		if (token == NULL)
			break;

		for (str2 = token; ; str2 = NULL) {
			subtoken = strtok_r(str2, "=", &saveptr2);
			if (subtoken == NULL)
				break;
			if( (str2 == token) && ((eid = get_ev_id(subtoken)) != -1))
				;
			else if(eid == -1)
				break;

			for (str3 = subtoken; ; str3 = NULL) {
				kommatoken = strtok_r(str3, ",", &saveptr3);
				if (kommatoken == NULL)
					break;

				for (str4 = kommatoken; ; str4 = NULL) {
					dptoken = strtok_r(str4, ":", &saveptr4);
					if (dptoken == NULL) {
						break;
					}
					if(str4 == kommatoken && str4 != token && eid != -1) {
						if((ah = get_action_handler(dptoken)) != NULL) {
							new_event(eid);
							add_handler(eid, i, ah);
							i++;
						}
					}
					else if(str4 != token && eid != -1 && ah) {
						add_option(eid, i-1, k, dptoken);
						k++;
					}
					else if(!ah)
						break;
				}
				k=0;
			}
			new_event(eid);
			add_handler(eid, i, NULL);
			i=0; 
		}
	}
}
XCamReturn
CL3aImageProcessor::create_handlers ()
{
    SmartPtr<CLImageHandler> image_handler;
    SmartPtr<CLContext> context = get_cl_context ();

    XCAM_ASSERT (context.ptr ());

    /* black leve as first */
    image_handler = create_cl_blc_image_handler (context);
    _black_level = image_handler;
    XCAM_FAIL_RETURN (
        WARNING,
        image_handler.ptr (),
        XCAM_RETURN_ERROR_CL,
        "CL3aImageProcessor create blc handler failed");
    add_handler (image_handler);

    /* hdr */
    if (_enable_hdr) {
        image_handler = create_cl_hdr_image_handler (context, CL_HDR_TYPE_RGB);
        _hdr = image_handler;
        XCAM_FAIL_RETURN (
            WARNING,
            _hdr.ptr (),
            XCAM_RETURN_ERROR_CL,
            "CL3aImageProcessor create hdr handler failed");
        add_handler (image_handler);
    }

    /* demosaic */
    image_handler = create_cl_demosaic_image_handler (context);
    _demosaic = image_handler.dynamic_cast_ptr<CLBayer2RGBImageHandler> ();
    XCAM_FAIL_RETURN (
        WARNING,
        _demosaic.ptr (),
        XCAM_RETURN_ERROR_CL,
        "CL3aImageProcessor create demosaic handler failed");
    add_handler (image_handler);

    /* color space conversion */
    if (_out_smaple_type == OutSampleYuv) {
        image_handler = create_cl_csc_image_handler (context, CL_CSC_TYPE_RGBATONV12);
        _csc = image_handler.dynamic_cast_ptr<CLCscImageHandler> ();
        XCAM_FAIL_RETURN (
            WARNING,
            _csc .ptr (),
            XCAM_RETURN_ERROR_CL,
            "CL3aImageProcessor create csc handler failed");
        add_handler (image_handler);
    } else if (_out_smaple_type == OutSampleRGB) {
        _demosaic->set_output_format (_output_fourcc);
    }

    return XCAM_RETURN_NO_ERROR;
}
Example #3
0
int cli_answer_cb(int fd, void *arg)
{
    int done, res = 0;
    cli_conn_t *cli;
    buf_t *buf;
    my_conn_t *my;
    conn_t *c;

    cli = (cli_conn_t *)arg;
    c = cli->conn;
    buf = &(c->buf);
    my = c->my;


    if( (res = my_real_write(fd, buf, &done)) < 0 ){
        log_err(g_log, "conn:%u my_real_write error\n", c->connid);
        goto end;
    }

    if(done){
        if( (res = del_handler(fd)) < 0 ){
            log(g_log, "conn:%u del_handler error\n", c->connid);
            goto end;
        }

        res = add_handler(fd, EPOLLIN, cli_query_cb, cli);
        if(res < 0){
            log(g_log, "conn:%u add_handler error\n", c->connid);
            goto end;
        }

        res = add_handler(my->fd, EPOLLIN, my_answer_cb, my);
        if(res < 0){
            log(g_log, "conn:%u add_handler error\n", c->connid);
            goto end;
        }

        gettimeofday(&(c->tv_end), NULL);

        buf_reset(buf);

    }

    return res;

end:
    conn_close(c);

    return res;
}
Example #4
0
static int my_use_db_prepare(conn_t *c)
{
    int fd, len, res = 0;
    buf_t *buf;
    my_conn_t *my;
    cli_com_t com;

    my = c->my;
    fd = my->fd;
    buf = &(my->buf);

    com.pktno = 0;
    com.comno = COM_INIT_DB;
    len = strlen(c->curdb);
    memcpy(com.arg, c->curdb, len);
    com.len = len;

    make_com(buf, &com);
    res = add_handler(fd, EPOLLOUT, my_use_db_req_cb, my);
    if(res < 0){
        log(g_log, "conn:%u add_handler error\n", c->connid);
    }

    buf_rewind(buf);

    return res;
}
Example #5
0
static int cli_com_forward(conn_t *c)
{
    int res = 0, fd;
    my_conn_t *my;
    buf_t *buf;
    cli_conn_t *cli;
    my_node_t *node;

    my = c->my;
    fd = my->fd;
    buf = &(c->buf);
    cli = c->cli;
    node = my->node;

    log(g_log, "conn:%u mysql[%s:%s], sql:%s\n", c->connid, node->host, node->srv, c->arg );

    res = add_handler(fd, EPOLLOUT, my_query_cb, my);
    if(res < 0){
        log(g_log, "conn:%u add_handler error\n", c->connid);
        return res;
    }

    buf_rewind(buf);

    return res;
}
Example #6
0
/*
START_HANDLER (default_handler, GET, "", res, 0, matches) {
    response_add_header(res, "content-type", "text/html");
    response_write(res, "default page");
} END_HANDLER
*/
int main() {
    void *data;
    void (*proc)(void *);
    extern void worker_process(void *);
    int n,i;

	handler h = {simple_func, GET, "simple/\\([0-9]*$\\)", {0}, 2};
	add_handler(&h);
	/*
    app_init();
	
//     add_handler(simple);
//     add_handler(default_handler);
    data = &globals_r;
    proc = &worker_process;
    n = 1;
    for(i=0;i<n;i++){
        spawn_worker(data, proc);
    }

    (*proc)(data);
	
	app_close(0);
	*/
	stone_run();
    return 0;
}
Example #7
0
int load_handlers_from_dir( char *base_dir, struct _handler ***outbound_list, int count ) {
	struct dirent **namelist;


	syslog( LOG_ERR, "Scan dir for handlers: %s", base_dir);
	int filecount = scandir( base_dir, &namelist, handler_filter, NULL);
	if (filecount < 0) {
		syslog( LOG_ERR, "An error occured scanning: %s, for handlers", base_dir );
		return count;
	} else if ( filecount == 0 ) {
		syslog( LOG_ERR, "No handlers found in: %s", base_dir );
		return count;
	}


	syslog( LOG_ERR, "At least one handler found, so process what we found");
	struct _handler **list = *outbound_list;
	int n;
	for( n=0;n<filecount;n++ ) {
		char path[2048];
		path[0] = '\0';
		strcat(path, base_dir );
		strcat(path, namelist[n]->d_name );
		count = add_handler( &list, count, path );

		free(namelist[n]);
	}
	free(namelist);

	
	*outbound_list = list;
	return count;
}
Example #8
0
static gboolean on_socket_connected(GIOChannel *chan, GIOCondition cond,
							gpointer user)
{
	struct sockaddr saddr;
	unsigned int len = sizeof(saddr);
	int fd;
	GIOChannel *client_io = NULL;
	struct sock_server *data = user;

	if (cond != G_IO_IN)
		goto error;

	fd = accept(data->server_sock, &saddr, &len);
	if (fd == -1)
		goto error;

	client_io = g_io_channel_unix_new(fd);

	server = g_at_server_new(client_io);
	g_io_channel_unref(client_io);

	if (server == NULL)
		goto error;

	add_handler(server);

	return TRUE;

error:
	g_free(data);

	return FALSE;
}
Example #9
0
TEST_F(SchedUtilTest, TestTimerWheel)
{
    m_hook_ewait = true;
    auto sch_impl = std::dynamic_pointer_cast<crx::scheduler_impl>(m_sch.m_impl);
    auto tw = m_sch.get_timer_wheel();
    auto tw_impl = std::dynamic_pointer_cast<crx::timer_wheel_impl>(tw.m_impl);

    for (int i = 0; i < tw_impl->m_slots.size(); i++) {     // 0-24hour 1-60minutes 2-60seconds 3-10#100millis
        auto& slot = tw_impl->m_slots[i];
        slot.slot_idx = rand()%slot.elems.size();
    }

    int timer_fd = std::dynamic_pointer_cast<crx::timer_impl>(tw_impl->m_milli_tmr.m_impl)->fd;
    for (int i = 2; i < tw_impl->m_slots.size(); i++) {       // 0-测试小时级别(不测试) 1-测试分钟级别(不测试) 2-测试秒级别 3-测试微妙级别
        for (int j = 0; j < 16; j++) {
            m_rand_adder = rand()%100;
            int step_result = m_start_seed+m_rand_adder;

            size_t delay = 0;
            for (int k = i; k < tw_impl->m_slots.size(); k++) {
                auto& slot = tw_impl->m_slots[k];
                delay += (rand()%(slot.elems.size()-1)+1)*slot.tick;
            }
            delay += rand()%100;
            m_efd_cnt.emplace_back(std::make_pair(timer_fd, 0));

            size_t new_delay = (size_t)(ceil(delay/100.0)*100);
            int inter_start = -1;
            for (int k = 1; k < tw_impl->m_slots.size(); k++) {
                auto& slot = tw_impl->m_slots[k];
                if (new_delay < slot.tick)
                    continue;

                if (-1 == inter_start)
                    inter_start = k;

                int quotient = (int)(new_delay/slot.tick);
                m_efd_cnt[0].second += quotient*slot.tick/100;
                new_delay -= slot.tick*quotient;
            }

            for (int k = inter_start+1; k < tw_impl->m_slots.size(); k++) {
                auto& nslot = tw_impl->m_slots[k];
                m_efd_cnt[0].second += nslot.slot_idx*nslot.tick/100;
            }

            tw.add_handler(delay, std::bind(&SchedUtilTest::timer_wheel_helper, this, _1));
            sch_impl->main_coroutine();
            ASSERT_EQ(m_start_seed, step_result);
            m_efd_cnt.clear();
        }
    }
}
boolean_t
test_add_progress_handler()
{
	boolean_t	retval = B_FALSE;
	char		*loggername = "mylogger";
	const char	*host = "localhost";
	int		port = 2333;
	nvlist_t	*handler_args = NULL;
	logger_t	*pLogger = NULL;


	printf("Test: test_add_progress_handler\n");
	pLogger = (logger_t *)test_setup();
	if (pLogger == NULL) {
		printf("Failed to get a Logger\n");
		printf("Cannot proceed with test\n");
		return (retval);
	}

	if (nvlist_alloc(&handler_args, NVATTRS, 0) != 0) {
		printf("Cannot allocate space for handler args\n");
		return (retval);
	}

	if (handler_args == NULL) {
		printf("nvlist_alloc failed.\n");
		printf("Cannot proceed with test\n");
		return (retval);
	}

	/* Create a list of arguments for a ProgressHandler */
	if ((nvlist_add_string(handler_args, HANDLER, PROGRESS_HANDLER) != 0) ||
	    (nvlist_add_string(handler_args, HOST, host) != 0) ||
	    (nvlist_add_int32(handler_args, PORT, port) != 0)) {
		nvlist_free(handler_args);
		printf("Cannot create handler args\n");
		return (retval);
	}

	retval = add_handler(pLogger, handler_args, LOGGING_PROGRESS_HDLR);
	nvlist_free(handler_args);
	if (!retval) {
		printf("test_add_progress_handler: Fail\n");
	} else {
		printf("test_add_progress_handler: Pass\n");
		retval = B_TRUE;
	}

	Py_XDECREF(pLogger);
	return (retval);
}
Example #11
0
int cli_hs_stage1_prepare(conn_t *c)
{
    int res = 0;
    cli_conn_t *cli;
    buf_t *buf;
    my_auth_init_t init;
    my_info_t *info;
    my_node_t *node;
    my_conn_t *my;


    cli = c->cli;

    if( (res = conn_alloc_my_conn(c)) < 0 ){
        log(g_log, "conn:%u conn_alloc_my_conn error\n", c->connid);
        return -1;
    }
    my = c->my;
    node = my->node;
    info = node->info;

    buf = &(cli->buf);

    bzero(&init, sizeof(init));
    init.pktno = 0;
    init.prot_ver = info->protocol;
    strncpy(init.srv_ver, info->ver, sizeof(init.srv_ver) - 1);
    init.srv_ver[sizeof(init.srv_ver) - 1] = '\0';
    init.tid = c->connid;
    memcpy(init.scram, cli->scram, 8);
    init.cap = info->cap;
    init.lang = 8;//info->lang;
    init.status = info->status;
    strncpy(init.plug, cli->scram + 8, 12);
    init.scram_len = 21;
    init.plug[12] = '\0';

    if( (res = make_init(buf, &init)) < 0 ){
        log(g_log, "conn:%u make_init error\n", c->connid);
        return res;
    }

    res = add_handler(cli->fd, EPOLLOUT, cli_hs_stage1_cb, cli);
    if(res < 0){
        log(g_log, "conn:%u add_handler fail\n", c->connid);
        return -1;
    }

    return res;
}
Example #12
0
void
SignalHandler::add_handler(
  const std::string &	signal,
  CallbackBase &	callback)
{
  int isignal = convert_name_to_signal(signal);
  if (isignal >= 0) {
    add_handler(isignal, callback);
  }
  else if (isignal == -1)
    throw std::runtime_error("signal cannot be handled");
  else if (isignal == -2)
    throw std::runtime_error("signal name invalid");
  else
    throw std::logic_error("invalid value from convert_node_to_signal()");
}
Example #13
0
/* Function: al_init_video_addon
 */
bool al_init_video_addon(void)
{
   if (video_inited)
      return true;

#ifdef ALLEGRO_CFG_VIDEO_HAVE_OGV
   add_handler(".ogv", _al_video_ogv_vtable());
#endif

   if (handlers == NULL) {
      ALLEGRO_WARN("No video handlers available!\n");
      return false;
   }

   _al_add_exit_func(al_shutdown_video_addon, "al_shutdown_video_addon");

   return true;
}
Example #14
0
int my_answer_cb(int fd, void *arg)
{
    int res = 0;
    my_conn_t *my;
    cli_conn_t *cli;
    conn_t *c;
    buf_t *buf;

    my = (my_conn_t *)arg;
    c = my->conn;
    buf = &(c->buf);
    cli = c->cli;


    if( (res = my_real_read_result_set(fd, buf)) < 0 ){
        log_err(g_log, "conn:%u my_real_read_result_set error\n", c->connid);
        goto end;
    }

    if( (res = del_handler(fd)) < 0 ){
        log(g_log, "conn:%u del_handler error\n", c->connid);
        goto end;
    }

    if( (res = del_handler(cli->fd)) < 0 ){
        log(g_log, "conn:%u del_handler error\n", c->connid);
        goto end;
    }

    res = add_handler(cli->fd, EPOLLOUT, cli_answer_cb, cli);
    if(res < 0){
        log(g_log, "conn:%u add_handler error\n", c->connid);
        goto end;
    }

    buf_rewind(buf);

    return res;

end:
    conn_close_with_my(c);

    return res;
}
Example #15
0
static int cli_com_ok_write_cb(int fd, void *arg)
{
    int done, res = 0;
    cli_conn_t *cli;
    buf_t *buf;
    my_conn_t *my;
    conn_t *c;

    cli = (cli_conn_t *)arg;
    c = cli->conn;
    buf = &(c->buf);
    my = c->my;


    if( (res = my_real_write(fd, buf, &done)) < 0 ){
        log_err(g_log, "conn:%u my_real_write error\n", c->connid);
        goto end;
    }

    if(done){
        if( (res = del_handler(fd)) < 0 ){
            log(g_log, "conn:%u del_handler error\n", c->connid);
            goto end;
        }

        res = add_handler(fd, EPOLLIN, cli_query_cb, cli);
        if(res < 0){
            log(g_log, "conn:%u add_handler error\n", c->connid);
            goto end;
        }

        buf_reset(buf);

        conn_state_set_reading_client(c);
    }

    return res;

end:
    conn_close(c);

    return res;
}
Example #16
0
static int my_use_db_resp_cb(int fd, void *arg)
{
    int res = 0, done;
    my_conn_t *my;
    conn_t *c;
    buf_t *buf;

    my = (my_conn_t *)arg;
    c = my->conn;
    buf = &(my->buf);

    if( (res = my_real_read(fd, buf, &done)) < 0 ){
        log_err(g_log, "conn:%u my_real_read error\n", c->connid);
        goto end;
    }

    if(done){
        if( (res = del_handler(fd)) < 0 ){
            log(g_log, "conn:%u del_handler fd[%d] error\n", c->connid, fd);
            goto end;
        }

        strncpy(my->ctx.curdb, c->curdb, sizeof(my->ctx.curdb) - 1);
        my->ctx.curdb[sizeof(my->ctx.curdb) - 1] = '\0';

        res = add_handler(fd, EPOLLOUT, my_query_cb, arg);
        if(res < 0){
            log(g_log, "conn:%u add_handler fd[%d] error\n", c->connid, fd);
            goto end;
        }

        buf_reset(buf);

        conn_state_set_writing_mysql(c);
    }

    return res;

end:
    conn_close_with_my(c);

    return res;
}
Example #17
0
// set the int 0 timer to trigger a bit more than every ~53ms 
void setup_timer() {

	// 1.193182 MHz input clock
	// divide by 1193 (0x04a9) to get around 1000Hz (~1000.15256 Hz)
	kdebug("setting int0 timer ");	
	pic_mask_interrupt(INT_TIMER);
	outb(0x43, 0x34); // 00110100b - chan 0, freq. divider, set lo/hi byte
	outb(0x40, 0xa9); // Low byte of divider to chan 0 reload value
	outb(0x40, 0x04); // High byte of divider to chan 0 reload value


	kdebug("initialising ktimers");

	/* Say we call it every 1000 useconds, when we really do every 999.847 useconds) */
	ktimer_init(1000); 
	
	add_handler(INTR_BASE + INT_TIMER, &early_timer_isr);
	pic_unmask_interrupt(INT_TIMER);
}
Example #18
0
int cli_hs_stage3_cb(int fd, void *arg)
{
    int done, res = 0;
    cli_conn_t *cli;
    conn_t *c;
    buf_t *buf;

    cli = (cli_conn_t *)arg;
    buf = &(cli->buf);
    c = cli->conn;


    if( (res = my_real_write(fd, buf, &done)) < 0 ){
        log_err(g_log, "conn:%u my_real_write error\n", c->connid);
        goto end;
    }

    if(done){
        if( (res = del_handler(fd)) < 0 ){
            log(g_log, "conn:%u del_handler error\n", c->connid);
            goto end;
        }

        res = add_handler(fd, EPOLLIN, cli_query_cb, arg);
        if(res < 0){
            log(g_log, "conn:%u add_handler error\n", c->connid);
            goto end;
        }

        buf_reset(buf);
        buf_reset(&(c->buf));

        conn_state_set_idle(c);
    }

    return res;

end:
    //fix me
    conn_close(c);

    return res;
}
Example #19
0
static void test_server(int type)
{
	switch (type) {
	case 0:
		if (create_tty("/phonesim1") == FALSE)
			exit(1);

		add_handler(server);
		break;
	case 1:
		if (create_tcp("/phonesim1", DEFAULT_TCP_PORT) == FALSE)
			exit(1);
		break;
	case 2:
		if (create_unix("/phonesim1", DEFAULT_SOCK_PATH) == FALSE)
			exit(1);
		break;
	}
}
Example #20
0
int my_query_cb(int fd, void *arg)
{
    int done, res = 0;
    my_conn_t *my;
    conn_t *c;
    buf_t *buf;

    my = (my_conn_t *)arg;
    c = my->conn;
    buf = &(c->buf);


    if( (res = my_real_write(fd, buf, &done)) < 0 ){
        log_err(g_log, "conn:%u my_real_write error\n", c->connid);
        goto end;
    }

    if(done){
        if( (res = del_handler(fd)) < 0 ){
            log(g_log, "conn:%u del_handler error\n", c->connid);
            goto end;
        }

        res = add_handler(fd, EPOLLIN, my_answer_cb, my);
        if(res < 0){
            log(g_log, "conn:%u add_handler error\n", c->connid);
            goto end;
        }

        buf_reset(buf);

        conn_state_set_read_mysql_write_client(c);

    }

    return res;

end:
    conn_close_with_my(c);

    return res;
}
Example #21
0
XCamReturn
X3aAnalyzeTuner::create_tuning_handlers ()
{
    XCamReturn ret = XCAM_RETURN_NO_ERROR;

    SmartPtr<AeHandler> ae_handler = _analyzer->get_ae_handler ();
    SmartPtr<AwbHandler> awb_handler = _analyzer->get_awb_handler();

    SmartPtr<X3aCiqTuningHandler> tuning_handler = new X3aCiqTnrTuningHandler ();

    if (tuning_handler.ptr ()) {
        tuning_handler->set_ae_handler (ae_handler);
        tuning_handler->set_awb_handler (awb_handler);
        add_handler (tuning_handler);
    } else {
        ret = XCAM_RETURN_ERROR_PARAM;
    }

    return ret;
}
XCamReturn
CLCscImageProcessor::create_handlers ()
{
    SmartPtr<CLImageHandler> image_handler;
    SmartPtr<CLContext> context = get_cl_context ();

    XCAM_ASSERT (context.ptr ());

    /* color space conversion */
    image_handler = create_cl_csc_image_handler (context, CL_CSC_TYPE_YUYVTORGBA);
    _csc = image_handler.dynamic_cast_ptr<CLCscImageHandler> ();
    XCAM_FAIL_RETURN (
        WARNING,
        _csc .ptr (),
        XCAM_RETURN_ERROR_CL,
        "CLCscImageProcessor create csc handler failed");

    image_handler->set_pool_type (CLImageHandler::CLVideoPoolType);
    add_handler (image_handler);

    return XCAM_RETURN_NO_ERROR;
}
Example #23
0
static int cli_com_ignored(conn_t *c)
{
#define CLI_COM_IGNORE_OK_PKT_SIZE 7

    int res = 0, fd;
    uint32_t pktlen;
    uint8_t pktno;

    buf_t *buf;
    cli_conn_t *cli;
    char *ptr;


    pktlen = 0;
    pktno = 1;
    buf = &(c->buf);
    cli = c->cli;
    fd = cli->fd;

    buf_reset(buf);
    ptr = buf->ptr;

    bzero(ptr + 4, CLI_COM_IGNORE_OK_PKT_SIZE);
    pktlen = CLI_COM_IGNORE_OK_PKT_SIZE;
    memcpy(ptr, &pktlen, 3);
    memcpy(ptr + 3, &pktno, 1);

    buf->used += (CLI_COM_IGNORE_OK_PKT_SIZE + 4);
    buf->pos += (CLI_COM_IGNORE_OK_PKT_SIZE + 4);
    buf_rewind(buf);

    res = add_handler(fd, EPOLLOUT, cli_com_ok_write_cb, cli);
    if(res < 0){
        log(g_log, "conn:%u add_handler error\n", c->connid);
        return res;
    }

    return 0;
}
Example #24
0
static int my_use_db_req_cb(int fd, void *arg)
{
    int res = 0, done;
    my_conn_t *my;
    conn_t *c;
    buf_t *buf;

    my = (my_conn_t *)arg;
    c = my->conn;
    buf = &(my->buf);

    if( (res = my_real_write(fd, buf, &done)) < 0 ){
        log_err(g_log, "conn:%u my_real_write error\n", c->connid);
        goto end;
    }

    if(done){
        if( (res = del_handler(fd)) < 0 ){
            log(g_log, "conn:%u del_handler fd[%d] error\n", c->connid, fd);
            goto end;
        }

        res = add_handler(fd, EPOLLIN,my_use_db_resp_cb,arg);
        if(res < 0){
            log(g_log, "conn:%u add_handler fd[%d] error\n", c->connid, fd);
            goto end;
        }

        buf_reset(buf);
    }

    return res;

end:
    conn_close_with_my(c);

    return res;
}
Example #25
0
int my_ping_prepare(my_conn_t *my)
{
    int fd, len, res = 0;
    buf_t *buf;
    cli_com_t com;

    fd = my->fd;
    buf = &(my->buf);

    com.pktno = 0;
    com.comno = COM_PING;
    com.len = 0;

    make_com(buf, &com);
    res = add_handler(fd, EPOLLOUT, my_ping_req_cb, my);
    if(res < 0){
        log(g_log, "add_handler error\n");
    }

    buf_rewind(buf);

    return res;
}
Example #26
0
int my_hs_stage2_cb(int fd, void *arg)
{//给服务器发送认证数据,并且注册读取结果回调
    int done, res = 0;
    my_conn_t *my;
    buf_t *buf;

    my = (my_conn_t *)arg;
    buf = &(my->buf);


    if( (res = my_real_write(fd, buf, &done)) < 0 ){
        log_err(g_log, "my_real_write error[%d], errno:%d, errmsg:%s\n", res, errno, strerror(errno) );
        goto end;
    }

    if(done){
        if( (res = del_handler(fd)) < 0 ){
            log(g_log, "del_handler fd[%d] error\n", fd);
            goto end;
        }
		//认证数据发送完成后,下一步进行结果验证,登陆结果
        if( (res = add_handler(fd, EPOLLIN, my_hs_stage3_cb, arg)) < 0 ){
            log(g_log, "add_handler fd[%d] error\n", fd);
            goto end;
        }

        buf_reset(buf);
    }

    return res;

end:
	-- ((my_node_t*)my->node)->cur_connecting_cnt ;
    my_conn_close_on_fail(my);

    return res;
}
Example #27
0
static int my_ping_req_cb(int fd, void *arg)
{
    int res = 0, done;
    my_conn_t *my;
    buf_t *buf;

    my = (my_conn_t *)arg;
    buf = &(my->buf);

    if( (res = my_real_write(fd, buf, &done)) < 0 ){
        log_err(g_log, "my_real_write error\n");
        goto end;
    }

    if(done){
        if( (res = del_handler(fd)) < 0 ){
            log(g_log, "del_handler fd[%d] error\n", fd);
            goto end;
        }

        res = add_handler(fd, EPOLLIN,my_ping_resp_cb,arg);
        if(res < 0){
            log(g_log, "add_handler fd[%d] error\n", fd);
            goto end;
        }

        buf_reset(buf);
    }

    return res;

end:
    my_conn_close(my);

    return res;
}
Example #28
0
XCamReturn
CL3aImageProcessor::create_handlers ()
{
    SmartPtr<CLImageHandler> image_handler;
    SmartPtr<CLContext> context = get_cl_context ();

    XCAM_ASSERT (context.ptr ());

#if 1
    /* bayer pipeline */
    image_handler = create_cl_bayer_pipe_image_handler (context);
    _bayer_pipe = image_handler.dynamic_cast_ptr<CLBayerPipeImageHandler> ();
    XCAM_FAIL_RETURN (
        WARNING,
        image_handler.ptr (),
        XCAM_RETURN_ERROR_CL,
        "CL3aImageProcessor create bayer pipe handler failed");
    _bayer_pipe->set_stats_callback (_stats_callback);
#if 0
    if (get_profile () >= AdvancedPipelineProfile) {
        _bayer_pipe->set_output_format (V4L2_PIX_FMT_ABGR32);
    }
#endif
    _bayer_pipe->enable_denoise (XCAM_DENOISE_TYPE_BNR & _snr_mode);
    _bayer_pipe->enable_gamma (_enable_gamma);
    image_handler->set_pool_size (XCAM_CL_3A_IMAGE_MAX_POOL_SIZE * 2);
    add_handler (image_handler);
    if(_capture_stage == BasicbayerStage)
        return XCAM_RETURN_NO_ERROR;

#else
    /* black leve as first */
    image_handler = create_cl_blc_image_handler (context);
    _black_level = image_handler.dynamic_cast_ptr<CLBlcImageHandler> ();
    XCAM_FAIL_RETURN (
        WARNING,
        image_handler.ptr (),
        XCAM_RETURN_ERROR_CL,
        "CL3aImageProcessor create blc handler failed");
    add_handler (image_handler);

    image_handler = create_cl_dpc_image_handler (context);
    _dpc = image_handler.dynamic_cast_ptr<CLDpcImageHandler> ();
    XCAM_FAIL_RETURN (
        WARNING,
        image_handler.ptr (),
        XCAM_RETURN_ERROR_CL,
        "CL3aImageProcessor create dpc handler failed");
    _dpc->set_kernels_enable(_enable_dpc);
    add_handler (image_handler);

    image_handler = create_cl_bnr_image_handler (context);
    _bnr = image_handler.dynamic_cast_ptr<CLBnrImageHandler> ();
    XCAM_FAIL_RETURN (
        WARNING,
        _bnr.ptr (),
        XCAM_RETURN_ERROR_CL,
        "CL3aImageProcessor create bnr handler failed");
    _bnr->set_kernels_enable (XCAM_DENOISE_TYPE_BNR & _snr_mode);
    add_handler (image_handler);

    image_handler = create_cl_3a_stats_image_handler (context);
    _x3a_stats_calculator = image_handler.dynamic_cast_ptr<CL3AStatsCalculator> ();
    XCAM_FAIL_RETURN (
        WARNING,
        _x3a_stats_calculator.ptr (),
        XCAM_RETURN_ERROR_CL,
        "CL3aImageProcessor create 3a stats calculator failed");
    _x3a_stats_calculator->set_stats_callback (_stats_callback);
    add_handler (image_handler);

    image_handler = create_cl_wb_image_handler (context);
    _wb = image_handler.dynamic_cast_ptr<CLWbImageHandler> ();
    XCAM_FAIL_RETURN (
        WARNING,
        _wb.ptr (),
        XCAM_RETURN_ERROR_CL,
        "CL3aImageProcessor create whitebalance handler failed");
    add_handler (image_handler);

    /* gamma */
    image_handler = create_cl_gamma_image_handler (context);
    _gamma = image_handler.dynamic_cast_ptr<CLGammaImageHandler> ();
    XCAM_FAIL_RETURN (
        WARNING,
        _gamma.ptr (),
        XCAM_RETURN_ERROR_CL,
        "CL3aImageProcessor create gamma handler failed");
    _gamma->set_kernels_enable (_enable_gamma);
    add_handler (image_handler);

    /* hdr */
    image_handler = create_cl_hdr_image_handler (context, CL_HDR_DISABLE);
    _hdr = image_handler.dynamic_cast_ptr<CLHdrImageHandler> ();
    XCAM_FAIL_RETURN (
        WARNING,
        _hdr.ptr (),
        XCAM_RETURN_ERROR_CL,
        "CL3aImageProcessor create hdr handler failed");
    if(_hdr_mode == CL_HDR_TYPE_RGB)
        _hdr->set_mode (_hdr_mode);
    add_handler (image_handler);

    /* demosaic */
    image_handler = create_cl_demosaic_image_handler (context);
    _demosaic = image_handler.dynamic_cast_ptr<CLBayer2RGBImageHandler> ();
    XCAM_FAIL_RETURN (
        WARNING,
        _demosaic.ptr (),
        XCAM_RETURN_ERROR_CL,
        "CL3aImageProcessor create demosaic handler failed");
    image_handler->set_pool_size (XCAM_CL_3A_IMAGE_MAX_POOL_SIZE);
    add_handler (image_handler);
#endif

    /* hdr-lab*/
    image_handler = create_cl_hdr_image_handler (context, CL_HDR_DISABLE);
    _hdr = image_handler.dynamic_cast_ptr<CLHdrImageHandler> ();
    XCAM_FAIL_RETURN (
        WARNING,
        _hdr.ptr (),
        XCAM_RETURN_ERROR_CL,
        "CL3aImageProcessor create hdr handler failed");
    if(_hdr_mode == CL_HDR_TYPE_LAB)
        _hdr->set_mode (_hdr_mode);
    image_handler->set_pool_size (XCAM_CL_3A_IMAGE_MAX_POOL_SIZE);
    add_handler (image_handler);

    /* bilateral noise reduction */
    image_handler = create_cl_denoise_image_handler (context);
    _binr = image_handler.dynamic_cast_ptr<CLDenoiseImageHandler> ();
    XCAM_FAIL_RETURN (
        WARNING,
        _binr.ptr (),
        XCAM_RETURN_ERROR_CL,
        "CL3aImageProcessor create denoise handler failed");
    _binr->set_kernels_enable (XCAM_DENOISE_TYPE_BILATERAL & _snr_mode);
    image_handler->set_pool_size (XCAM_CL_3A_IMAGE_MAX_POOL_SIZE);
    add_handler (image_handler);

#if 0
    image_handler = create_cl_rgb_pipe_image_handler (context);
    _rgb_pipe = image_handler.dynamic_cast_ptr<CLRgbPipeImageHandler> ();
    XCAM_FAIL_RETURN (
        WARNING,
        _rgb_pipe.ptr (),
        XCAM_RETURN_ERROR_CL,
        "CL3aImageProcessor create rgb pipe handler failed");
    _rgb_pipe->set_kernels_enable (get_profile () >= AdvancedPipelineProfile);
    add_handler (image_handler);
    /* Temporal Noise Reduction (RGB domain) */
    image_handler = create_cl_tnr_image_handler(context, CL_TNR_TYPE_RGB);
    _tnr_rgb = image_handler.dynamic_cast_ptr<CLTnrImageHandler> ();
    XCAM_FAIL_RETURN (
        WARNING,
        _tnr_rgb.ptr (),
        XCAM_RETURN_ERROR_CL,
        "CL3aImageProcessor create tnr handler failed");
    _tnr_rgb->set_mode (CL_TNR_TYPE_RGB & _tnr_mode);
    add_handler (image_handler);
#else

    /* simple noise reduction */
    image_handler = create_cl_snr_image_handler (context);
    _snr = image_handler.dynamic_cast_ptr<CLSnrImageHandler> ();
    XCAM_FAIL_RETURN (
        WARNING,
        _snr.ptr (),
        XCAM_RETURN_ERROR_CL,
        "CL3aImageProcessor create snr handler failed");
    _snr->set_kernels_enable (XCAM_DENOISE_TYPE_SIMPLE & _snr_mode);
    image_handler->set_pool_size (XCAM_CL_3A_IMAGE_MAX_POOL_SIZE);
    add_handler (image_handler);
#endif

    /* tone mapping*/
    image_handler = create_cl_tonemapping_image_handler (context);
    _tonemapping = image_handler.dynamic_cast_ptr<CLTonemappingImageHandler> ();
    XCAM_FAIL_RETURN (
        WARNING,
        _tonemapping.ptr (),
        XCAM_RETURN_ERROR_CL,
        "CL3aImageProcessor create tonemapping handler failed");
    _tonemapping->set_kernels_enable (_enable_tonemapping);
    image_handler->set_pool_size (XCAM_CL_3A_IMAGE_MAX_POOL_SIZE);
    add_handler (image_handler);

#if 1
    image_handler = create_cl_yuv_pipe_image_handler (context);
    _yuv_pipe = image_handler.dynamic_cast_ptr<CLYuvPipeImageHandler> ();
    XCAM_FAIL_RETURN (
        WARNING,
        _yuv_pipe.ptr (),
        XCAM_RETURN_ERROR_CL,
        "CL3aImageProcessor create macc handler failed");
    _yuv_pipe->set_tnr_enable (_tnr_mode & CL_TNR_TYPE_RGB, _tnr_mode & CL_TNR_TYPE_YUV);
    image_handler->set_pool_size (XCAM_CL_3A_IMAGE_MAX_POOL_SIZE);
    add_handler (image_handler);
#else
    /* macc */
    image_handler = create_cl_macc_image_handler (context);
    _macc = image_handler.dynamic_cast_ptr<CLMaccImageHandler> ();
    XCAM_FAIL_RETURN (
        WARNING,
        _macc.ptr (),
        XCAM_RETURN_ERROR_CL,
        "CL3aImageProcessor create macc handler failed");
    _macc->set_kernels_enable (_enable_macc);
    add_handler (image_handler);

    /* color space conversion */
    image_handler = create_cl_csc_image_handler (context, CL_CSC_TYPE_RGBATONV12);
    _csc = image_handler.dynamic_cast_ptr<CLCscImageHandler> ();
    XCAM_FAIL_RETURN (
        WARNING,
        _csc .ptr (),
        XCAM_RETURN_ERROR_CL,
        "CL3aImageProcessor create csc handler failed");
    image_handler->set_pool_type (CLImageHandler::DrmBoPoolType);
    add_handler (image_handler);


    /* Temporal Noise Reduction (YUV domain) */
    image_handler = create_cl_tnr_image_handler(context, CL_TNR_TYPE_YUV);
    _tnr_yuv = image_handler.dynamic_cast_ptr<CLTnrImageHandler> ();
    XCAM_FAIL_RETURN (
        WARNING,
        _tnr_yuv.ptr (),
        XCAM_RETURN_ERROR_CL,
        "CL3aImageProcessor create tnr handler failed");
    _tnr_yuv->set_mode (CL_TNR_TYPE_YUV & _tnr_mode);
    image_handler->set_pool_type (CLImageHandler::DrmBoPoolType);
    add_handler (image_handler);
#endif

    /* ee */
    image_handler = create_cl_ee_image_handler (context);
    _ee = image_handler.dynamic_cast_ptr<CLEeImageHandler> ();
    XCAM_FAIL_RETURN (
        WARNING,
        _ee.ptr (),
        XCAM_RETURN_ERROR_CL,
        "CL3aImageProcessor create ee handler failed");
    _ee->set_kernels_enable (XCAM_DENOISE_TYPE_EE & _snr_mode);
    image_handler->set_pool_type (CLImageHandler::DrmBoPoolType);
    image_handler->set_pool_size (XCAM_CL_3A_IMAGE_MAX_POOL_SIZE);
    add_handler (image_handler);


    /* biyuv */
    image_handler = create_cl_biyuv_image_handler (context);
    _biyuv = image_handler.dynamic_cast_ptr<CLBiyuvImageHandler> ();
    XCAM_FAIL_RETURN (
        WARNING,
        _biyuv.ptr (),
        XCAM_RETURN_ERROR_CL,
        "CL3aImageProcessor create biyuv handler failed");
    _biyuv->set_kernels_enable (XCAM_DENOISE_TYPE_BIYUV & _snr_mode);
    image_handler->set_pool_type (CLImageHandler::DrmBoPoolType);
    image_handler->set_pool_size (XCAM_CL_3A_IMAGE_MAX_POOL_SIZE);
    add_handler (image_handler);

    /* image scaler */
    image_handler = create_cl_image_scaler_handler (context, V4L2_PIX_FMT_NV12);
    _scaler = image_handler.dynamic_cast_ptr<CLImageScaler> ();
    XCAM_FAIL_RETURN (
        WARNING,
        _scaler.ptr (),
        XCAM_RETURN_ERROR_CL,
        "CL3aImageProcessor create scaler handler failed");
    _scaler->set_scaler_factor (XCAM_CL_3A_IMAGE_SCALER_FACTOR);
    _scaler->set_buffer_callback (_stats_callback);
    image_handler->set_pool_type (CLImageHandler::DrmBoPoolType);
    image_handler->set_kernels_enable (false);
    add_handler (image_handler);

    if (_out_smaple_type == OutSampleRGB) {
        image_handler = create_cl_csc_image_handler (context, CL_CSC_TYPE_NV12TORGBA);
        _csc = image_handler.dynamic_cast_ptr<CLCscImageHandler> ();
        XCAM_FAIL_RETURN (
            WARNING,
            _csc .ptr (),
            XCAM_RETURN_ERROR_CL,
            "CL3aImageProcessor create csc handler failed");
        image_handler->set_pool_type (CLImageHandler::DrmBoPoolType);
        image_handler->set_pool_size (XCAM_CL_3A_IMAGE_MAX_POOL_SIZE);
        add_handler (image_handler);
    }

    return XCAM_RETURN_NO_ERROR;
}
Example #29
0
int cli_hs_stage2_cb(int fd, void *arg)
{
    int done, res = 0;
    cli_conn_t *cli;
    conn_t *c;
    buf_t *buf;
    my_auth_result_t result;
    cli_auth_login_t login;
    my_result_error_t error;
    char token[128];

    cli = (cli_conn_t *)arg;
    c = cli->conn;
    buf = &(cli->buf);


    if( (res = my_real_read(fd, buf, &done)) < 0 ){
        log_err(g_log, "conn:%u my_real_read error\n", c->connid);
        goto end;
    }

    if(done){
        if( (res = del_handler(fd)) < 0 ){
            log(g_log, "conn:%u del_handler error\n", c->connid);
            goto end;
        }

        if( (res = parse_login(buf, &login)) < 0 ){
            log(g_log, "conn:%u parse login error\n", c->connid);
            goto end;
        }

        if(!strcmp(login.user, g_conf.user)){
            scramble(token, cli->scram, g_conf.passwd);
            if(memcmp(token, login.scram, 20) == 0){

                strncpy(c->curdb, login.db, sizeof(c->curdb) - 1);
                result.pktno = 2;
                if( (res = make_auth_result(buf, &result)) < 0 ){
                    log(g_log, "conn:%u make auth result error\n", c->connid);
                    goto end;
                }

                res = add_handler(fd, EPOLLOUT, cli_hs_stage3_cb, arg);
                if(res < 0){
                    log(g_log, "conn:%u add_handler error\n", c->connid);
                    goto end;
                }

                return res;
            }
        }

        log(g_log, "login auth fail, wrong user or passwd\n");

        error.pktno = 2;
        error.field_count = 0xff;
        error.err = 1045;
        error.marker = '#';
        memcpy(error.sqlstate, "28000", 5);
        strncpy(error.msg, "Access denied", sizeof(error.msg) - 1);
        error.msg[sizeof(error.msg) - 1] = '\0';

        make_result_error(buf, &error);

        res = add_handler(fd, EPOLLOUT, cli_hs_auth_fail_cb, arg);
        if(res < 0){
            log(g_log, "conn:%u add_handler error\n", c->connid);
            goto end;
        }
    }

    return res;

end:
    conn_close(c);

    return res;
}
Example #30
0
int my_hs_stage1_cb(int fd, void *arg)
{//读取mysql的连接认证原始数据
    int done, res = 0;
    my_conn_t *my;
    buf_t *buf;
    char *user, *pass, token[64], message[64];
    my_node_t *node;
    my_auth_init_t init;
    cli_auth_login_t login;
    my_info_t *info;

    my = (my_conn_t *)arg;
    node = my->node;
    buf = &(my->buf);

    user = node->user;
    pass = node->pass;
    info = node->info;


    if( (res = my_real_read(fd, buf, &done)) < 0 ){
        log_err(g_log, "read mysql error res[%d]\n", res);
        goto end;
    }

    if(done){
        if( (res = del_handler(fd)) < 0 ) {
            log(g_log, "del_handler fd[%d] error\n", fd);
            goto end;
        }

        res = add_handler(fd, EPOLLOUT, my_hs_stage2_cb, arg);
        if(res < 0){
            log(g_log, "add_handler fd[%d] error\n", fd);
            goto end;
        }

        if( (res = parse_init(buf, &init)) < 0 ){
            log(g_log, "parse init packet error\n");
            goto end;
        }

		memcpy(message, init.scram, 8);
        memcpy(message + 8, init.plug, 12);
        //memcpy(message, "%@R[SoWC", 8);
        //memcpy(message + 8, "+L|LG_+R={tV", 12);
        message[8+12] = '\0';

        my_info_set(init.prot_ver, init.lang, init.status, init.cap, init.srv_ver, strlen(init.srv_ver));

        login.pktno = 1;
        login.client_flags = init.cap & (~cap_umask);
        login.max_pkt_size = 16777216;
        login.charset = init.lang;
        strncpy(login.user, user, sizeof(login.user) - 1);
        login.user[sizeof(login.user) - 1] = '\0';
        if(pass[0] == '\0'){
            login.scram[0] = 0;
        } else {
            login.scram[0] = 20;
            scramble(token, message, pass);
            memcpy(login.scram + 1, token, 20);
        }
        strncpy(login.db, "", sizeof(login.db) - 1);
        login.db[sizeof(login.db) - 1] = '\0';

        if( (res = make_login(buf, &login)) < 0 ){
            log(g_log, "make login packet error\n");
            goto end;
        }
    }

    return res;

end:

	-- node->cur_connecting_cnt ;
    my_conn_close_on_fail(my);

    return res;
}