22
22
const char *function_name,
23
23
size_t function_name_size)
25
gearman_server_function_st *server_function;
25
gearman_server_function_st *function;
27
for (server_function= server->function_list; server_function != NULL;
28
server_function= server_function->next)
27
for (function= server->function_list; function != NULL;
28
function= function->next)
30
if (server_function->function_name_size == function_name_size &&
31
!memcmp(server_function->function_name, function_name,
30
if (function->function_name_size == function_name_size &&
31
!memcmp(function->function_name, function_name, function_name_size))
34
return server_function;
38
server_function= gearman_server_function_create(server, NULL);
39
if (server_function == NULL)
37
function= gearman_server_function_create(server, NULL);
42
server_function->function_name= malloc(function_name_size + 1);
43
if (server_function->function_name == NULL)
41
function->function_name= malloc(function_name_size + 1);
42
if (function->function_name == NULL)
45
gearman_server_function_free(server_function);
44
gearman_server_function_free(function);
49
memcpy(server_function->function_name, function_name, function_name_size);
50
server_function->function_name[function_name_size]= 0;
51
server_function->function_name_size= function_name_size;
48
memcpy(function->function_name, function_name, function_name_size);
49
function->function_name[function_name_size]= 0;
50
function->function_name_size= function_name_size;
53
return server_function;
56
55
gearman_server_function_st *
57
56
gearman_server_function_create(gearman_server_st *server,
58
gearman_server_function_st *server_function)
57
gearman_server_function_st *function)
60
if (server_function == NULL)
62
server_function= malloc(sizeof(gearman_server_function_st));
63
if (server_function == NULL)
61
function= malloc(sizeof(gearman_server_function_st));
66
memset(server_function, 0, sizeof(gearman_server_function_st));
67
server_function->options|= GEARMAN_SERVER_FUNCTION_ALLOCATED;
65
function->options= GEARMAN_SERVER_FUNCTION_ALLOCATED;
70
memset(server_function, 0, sizeof(gearman_server_function_st));
72
server_function->server= server;
73
server_function->max_queue_size= GEARMAN_DEFAULT_MAX_QUEUE_SIZE;
75
GEARMAN_LIST_ADD(server->function, server_function,)
77
return server_function;
70
function->worker_count= 0;
71
function->job_count= 0;
72
function->job_total= 0;
73
function->job_running= 0;
74
function->max_queue_size= GEARMAN_DEFAULT_MAX_QUEUE_SIZE;
75
function->function_name_size= 0;
76
function->server= server;
77
GEARMAN_LIST_ADD(server->function, function,)
78
function->function_name= NULL;
79
function->worker_list= NULL;
80
memset(function->job_list, 0,
81
sizeof(gearman_server_job_st *) * GEARMAN_JOB_PRIORITY_MAX);
82
memset(function->job_end, 0,
83
sizeof(gearman_server_job_st *) * GEARMAN_JOB_PRIORITY_MAX);
80
void gearman_server_function_free(gearman_server_function_st *server_function)
88
void gearman_server_function_free(gearman_server_function_st *function)
82
if (server_function->function_name != NULL)
83
free(server_function->function_name);
85
GEARMAN_LIST_DEL(server_function->server->function, server_function,)
87
if (server_function->options & GEARMAN_SERVER_FUNCTION_ALLOCATED)
88
free(server_function);
90
if (function->function_name != NULL)
91
free(function->function_name);
93
GEARMAN_LIST_DEL(function->server->function, function,)
95
if (function->options & GEARMAN_SERVER_FUNCTION_ALLOCATED)