memcached_server_list_st memcached_server_list_append(memcached_server_list_st ptr, const char *hostname, in_port_t port, memcached_return_t *error) { return memcached_server_list_append_with_weight(ptr, hostname, port, 0, error); }
memcached_server_st *memcached_server_list_append(memcached_server_st *ptr, const char *hostname, unsigned int port, memcached_return *error) { return memcached_server_list_append_with_weight(ptr, hostname, port, 0, error); }
memcached_server_st *memcached_servers_parse(const char *server_strings) { char *string; uint32_t port; uint32_t weight; const char *begin_ptr; const char *end_ptr; memcached_server_st *servers= NULL; memcached_return rc; WATCHPOINT_ASSERT(server_strings); end_ptr= server_strings + strlen(server_strings); for (begin_ptr= server_strings, string= index(server_strings, ','); begin_ptr != end_ptr; string= index(begin_ptr, ',')) { char buffer[HUGE_STRING_LEN]; char *ptr, *ptr2; port= 0; weight= 0; if (string) { memcpy(buffer, begin_ptr, (size_t) (string - begin_ptr)); buffer[(unsigned int)(string - begin_ptr)]= 0; begin_ptr= string+1; } else { size_t length= strlen(begin_ptr); memcpy(buffer, begin_ptr, length); buffer[length]= 0; begin_ptr= end_ptr; } ptr= index(buffer, ':'); if (ptr) { ptr[0]= 0; ptr++; port= (uint32_t) strtoul(ptr, (char **)NULL, 10); ptr2= index(ptr, ' '); if (! ptr2) ptr2= index(ptr, ':'); if (ptr2) { ptr2++; weight = (uint32_t) strtoul(ptr2, (char **)NULL, 10); } } servers= memcached_server_list_append_with_weight(servers, buffer, port, weight, &rc); if (isspace(*begin_ptr)) begin_ptr++; } return servers; }
int main(int argc, char *argv[]) { int i; int nr; int ret=0; char op; char seed='0'; char *server_addr; char buf[BUF_SIZE]; uint32_t key_len,value_len; memcached_st *memc; memcached_server_st *servers; memcached_return_t rc; if(argc<8) { print_usage(); return -1; } for(i=1; i<argc-1; i+=2) { if(argv[i][0]!='-'||i+1>=argc-1) { print_usage(); return -1; } switch(argv[i][1]) { case 'k': key_len=atoi(argv[i+1]); break; case 'v': value_len=atoi(argv[i+1]); break; case 'n': nr=atoi(argv[i+1]); break; case 'o': op=argv[i+1][0]; } } if(nr<=0) nr=102400; server_addr=argv[argc-1]; memc=memcached_create(NULL); servers=memcached_server_list_append_with_weight(NULL,server_addr,0,0,&rc); memcached_server_push(memc,servers); memcached_server_list_free(servers); switch(op) { case 's': rush_set(nr,buf,seed,key_len,value_len,memc); break; case 'a': rush_add(nr,buf,seed,key_len,value_len,memc); break; case 'r': rush_replace(nr,buf,seed,key_len,value_len,memc); break; case 'd': rush_delete(nr,buf,seed,key_len,memc); break; case 'g': rush_get(nr,buf,seed,key_len,memc); break; default: print_usage(); ret= -1; } memcached_free(memc); return ret; }