my_bool memc_stats_init(UDF_INIT *initid, UDF_ARGS *args, char *message) { memcached_return rc; memc_function_st *container; /* this is how to fail */ if (args->arg_count != 1) { strncpy(message, "1 argument required: servers, comma-separated: memc_stats(<servers>)", MYSQL_ERRMSG_SIZE); return 1; } args->arg_type[0]= STRING_RESULT; initid->max_length= MEMC_UDF_MAX_SIZE; container= calloc(1, sizeof(memc_function_st)); if (container == NULL) { strncpy(message, "Unable to allocate memory!", MYSQL_ERRMSG_SIZE); return 1; } /* Init the memcached_st we will use for this pass */ rc= memc_get_servers(&container->memc); /* Now setup the string */ container->stats_string= memcached_string_create(&container->memc, NULL, 1024); initid->ptr= (char *)container; return 0; }
memcached_result_st *memcached_result_create(const memcached_st *memc, memcached_result_st *ptr) { WATCHPOINT_ASSERT(memc); /* Saving malloc calls :) */ if (ptr) { ptr->options.is_allocated= false; } else { ptr= libmemcached_malloc(memc, sizeof(memcached_result_st)); if (ptr == NULL) return NULL; ptr->options.is_allocated= true; } ptr->options.is_initialized= true; _result_init(ptr, memc); ptr->root= memc; WATCHPOINT_SET(ptr->value.options.is_initialized= false); memcached_string_create(memc, &ptr->value, 0); WATCHPOINT_ASSERT_INITIALIZED(&ptr->value); WATCHPOINT_ASSERT(ptr->value.string == NULL); return ptr; }
memcached_result_st *memcached_result_create(memcached_st *memc, memcached_result_st *ptr) { /* Saving malloc calls :) */ if (ptr) { memset(ptr, 0, sizeof(memcached_result_st)); ptr->is_allocated= MEMCACHED_NOT_ALLOCATED; } else { if (memc->call_malloc) ptr= (memcached_result_st *)memc->call_malloc(memc, sizeof(memcached_result_st)); else ptr= (memcached_result_st *)malloc(sizeof(memcached_result_st)); if (ptr == NULL) return NULL; memset(ptr, 0, sizeof(memcached_result_st)); ptr->is_allocated= MEMCACHED_ALLOCATED; } ptr->root= memc; memcached_string_create(memc, &ptr->value, 0); WATCHPOINT_ASSERT(ptr->value.string == NULL); WATCHPOINT_ASSERT(ptr->value.is_allocated == MEMCACHED_NOT_ALLOCATED); return ptr; }
memcached_result_st *memcached_result_create(memcached_st *memc, memcached_result_st *ptr) { /* Saving malloc calls :) */ if (ptr) memset(ptr, 0, sizeof(memcached_result_st)); else { if (memc->call_malloc) ptr= (memcached_result_st *)memc->call_malloc(memc, sizeof(memcached_result_st)); else ptr= (memcached_result_st *)calloc(1, sizeof(memcached_result_st)); if (ptr == NULL) return NULL; ptr->is_allocated= true; } ptr->root= memc; memcached_string_create(memc, &ptr->value, 0); WATCHPOINT_ASSERT(ptr->value.string == NULL); return ptr; }