void create_modules() { ok(create_client( mod_gm_opt->server_list, &client ) == GM_OK, "created test client"); ok(create_worker( mod_gm_opt->server_list, &worker ) == GM_OK, "created test worker"); ok(worker_add_function( &worker, GM_DEFAULT_RESULT_QUEUE, get_results ) == GM_OK, "added result worker"); ok(worker_add_function( &worker, "dummy", dummy ) == GM_OK, "added dummy worker"); //gearman_worker_add_options(&worker, GEARMAN_WORKER_NON_BLOCKING); gearman_worker_set_timeout(&worker, 5000); return; }
/* get the worker */ int set_worker( gearman_worker_st *worker ) { create_worker( mod_gm_opt->server_list, worker ); if ( mod_gm_opt->result_queue == NULL ) { gm_log( GM_LOG_ERROR, "got no result queue!\n" ); return GM_ERROR; } gm_log( GM_LOG_DEBUG, "started result_worker thread for queue: %s\n", mod_gm_opt->result_queue ); if(worker_add_function( worker, mod_gm_opt->result_queue, get_results ) != GM_OK) { return GM_ERROR; } /* add our dummy queue, gearman sometimes forgets the last added queue */ worker_add_function( worker, "dummy", dummy); return GM_OK; }
/* create the worker */ int set_worker( gearman_worker_st *w ) { int x = 0; gm_log( GM_LOG_TRACE, "set_worker()\n" ); create_worker( mod_gm_opt->server_list, w ); if(worker_run_mode == GM_WORKER_STATUS) { /* register status function */ char status_queue[GM_BUFFERSIZE]; snprintf(status_queue, GM_BUFFERSIZE, "worker_%s", mod_gm_opt->identifier ); worker_add_function( w, status_queue, return_status ); } else { /* normal worker */ if(mod_gm_opt->hosts == GM_ENABLED) worker_add_function( w, "host", get_job ); if(mod_gm_opt->services == GM_ENABLED) worker_add_function( w, "service", get_job ); if(mod_gm_opt->events == GM_ENABLED) worker_add_function( w, "eventhandler", get_job ); while ( mod_gm_opt->hostgroups_list[x] != NULL ) { char buffer[GM_BUFFERSIZE]; snprintf( buffer, (sizeof(buffer)-1), "hostgroup_%s", mod_gm_opt->hostgroups_list[x] ); worker_add_function( w, buffer, get_job ); x++; } x = 0; while ( mod_gm_opt->servicegroups_list[x] != NULL ) { char buffer[GM_BUFFERSIZE]; snprintf( buffer, (sizeof(buffer)-1), "servicegroup_%s", mod_gm_opt->servicegroups_list[x] ); worker_add_function( w, buffer, get_job ); x++; } } /* add our dummy queue, gearman sometimes forgets the last added queue */ worker_add_function( w, "dummy", dummy); return GM_OK; }