int main() { gearman_worker_st worker; gearman_worker_create(&worker); gearman_worker_add_server(&worker, "localhost", 0); gearman_worker_add_function(&worker, "parser", 0, do_parse, NULL); while (1) { gearman_worker_work(&worker); } }
int main() { gearman_return_t ret; gearman_worker_st *worker = gearman_worker_create(NULL); gearman_worker_add_server(worker,"127.0.0.1",0); gearman_worker_add_function(worker,"syncToRedis",30, syncToRedis, NULL); gearman_worker_add_function(worker,"sync_UserInfo",30, sync_UserInfo, NULL); gearman_worker_add_function(worker,"sync_UserAndDeviceRelationShip",30, sync_UserAndDeviceRelationShip, NULL); while(1) { ret = gearman_worker_work(worker); if (ret != GEARMAN_SUCCESS) { printf("%s\n", gearman_worker_error(worker)); break; } } }
/* create the gearman worker */ int create_worker( gm_server_t * server_list[GM_LISTSIZE], gearman_worker_st *worker ) { int x = 0; gearman_return_t ret; signal(SIGPIPE, SIG_IGN); gearman_worker_create( worker ); if ( worker == NULL ) { gm_log( GM_LOG_ERROR, "Memory allocation failure on worker creation\n" ); return GM_ERROR; } while ( server_list[x] != NULL ) { ret = gearman_worker_add_server( worker, server_list[x]->host, server_list[x]->port ); if ( ret != GEARMAN_SUCCESS ) { gm_log( GM_LOG_ERROR, "worker error: %s\n", gearman_worker_error( worker ) ); return GM_ERROR; } x++; } assert(x != 0); return GM_OK; }
int main(int argc, char *argv[]) { gearman_benchmark_st benchmark; int c; char *host= NULL; in_port_t port= 0; char *function= NULL; uint32_t count= 0; gearman_return_t ret; gearman_worker_st worker; benchmark_init(&benchmark); if (gearman_worker_create(&worker) == NULL) { fprintf(stderr, "Memory allocation failure on worker creation\n"); exit(1); } while ((c = getopt(argc, argv, "c:f:h:p:v")) != -1) { switch(c) { case 'c': count= (uint32_t)atoi(optarg); break; case 'f': function= optarg; ret= gearman_worker_add_function(&worker, function, 0, worker_fn, &benchmark); if (ret != GEARMAN_SUCCESS) { fprintf(stderr, "%s\n", gearman_worker_error(&worker)); exit(1); } break; case 'h': host= optarg; ret= gearman_worker_add_server(&worker, host, port); if (ret != GEARMAN_SUCCESS) { fprintf(stderr, "%s\n", gearman_worker_error(&worker)); exit(1); } break; case 'p': port= (in_port_t)atoi(optarg); break; case 'v': benchmark.verbose++; break; default: usage(argv[0]); exit(1); } } if (signal(SIGPIPE, SIG_IGN) == SIG_ERR) { fprintf(stderr, "signal:%d\n", errno); exit(1); } if (host == NULL) { ret= gearman_worker_add_server(&worker, NULL, port); if (ret != GEARMAN_SUCCESS) { fprintf(stderr, "%s\n", gearman_worker_error(&worker)); exit(1); } } if (function == NULL) { ret= gearman_worker_add_function(&worker, GEARMAN_BENCHMARK_DEFAULT_FUNCTION, 0, worker_fn, &benchmark); if (ret != GEARMAN_SUCCESS) { fprintf(stderr, "%s\n", gearman_worker_error(&worker)); exit(1); } } while (1) { ret= gearman_worker_work(&worker); if (ret != GEARMAN_SUCCESS) { fprintf(stderr, "%s\n", gearman_worker_error(&worker)); break; } if (count > 0) { count--; if (count == 0) break; } } gearman_worker_free(&worker); return 0; }
int main() { if (signal(SIGPIPE, SIG_IGN) == SIG_ERR) { std::cerr << "signal:" << strerror(errno) << std::endl; return EXIT_FAILURE; } gearman_worker_st *worker; if ((worker= gearman_worker_create(NULL)) == NULL) { std::cerr << "Memory allocation failure on worker creation." << std::endl; return EXIT_FAILURE; } //if (unique) //{ gearman_worker_add_options(worker, GEARMAN_WORKER_GRAB_UNIQ); //} int timeout=-1; // if (timeout >= 0) { gearman_worker_set_timeout(worker, timeout); } if (gearman_failed(gearman_worker_add_server(worker, "localhost", GEARMAN_DEFAULT_TCP_PORT))) { std::cerr << gearman_worker_error(worker) << std::endl; return EXIT_FAILURE; } if (gearman_failed(gearman_worker_set_identifier(worker, "worker1", strlen("worker1")))) { std::cerr << gearman_worker_error(worker) << std::endl; return EXIT_FAILURE; } gearman_function_t worker_fn= gearman_function_create(worker_function); if (gearman_failed(gearman_worker_define_function(worker, gearman_literal_param("make_call"), worker_fn, 0, NULL/*&options*/))) { std::cerr << gearman_worker_error(worker) << std::endl; return EXIT_FAILURE; } int limit=0; // Add one if count is not zero if (limit != 0) { limit++; } while (--limit) { if (gearman_failed(gearman_worker_work(worker))) { std::cerr << gearman_worker_error(worker) << std::endl; break; } } gearman_worker_free(worker); return EXIT_SUCCESS; }