~yeban/libmemcached/todo-hosts.c-2

« back to all changes in this revision

Viewing changes to clients/ms_conn.c

  • Committer: Brian Aker
  • Date: 2011-03-17 21:45:08 UTC
  • Revision ID: brian@tangent.org-20110317214508-ogufz6pusakvcch0
Merge in updates to make sure exit/return is done properly.

Show diffs side-by-side

added added

removed removed

Lines of Context:
224
224
 * @param c, pointer of the concurrency
225
225
 * @param is_udp, whether it's udp
226
226
 *
227
 
 * @return int, if success, return 0, else return -1
 
227
 * @return int, if success, return EXIT_SUCCESS, else return -1
228
228
 */
229
229
static int ms_conn_udp_init(ms_conn_t *c, const bool is_udp)
230
230
{
260
260
    memset(c->udppkt, 0, MAX_UDP_PACKET * sizeof(ms_udppkt_t));
261
261
  }
262
262
 
263
 
  return 0;
 
263
  return EXIT_SUCCESS;
264
264
} /* ms_conn_udp_init */
265
265
 
266
266
 
272
272
 * @param read_buffer_size
273
273
 * @param is_udp, whether it's udp
274
274
 *
275
 
 * @return int, if success, return 0, else return -1
 
275
 * @return int, if success, return EXIT_SUCCESS, else return -1
276
276
 */
277
277
static int ms_conn_init(ms_conn_t *c,
278
278
                        const int init_state,
381
381
    atomic_add_32(&ms_stats.active_conns, 1);
382
382
  }
383
383
 
384
 
  return 0;
 
384
  return EXIT_SUCCESS;
385
385
} /* ms_conn_init */
386
386
 
387
387
 
414
414
 *
415
415
 * @param c, pointer of the concurrency
416
416
 *
417
 
 * @return int, if success, return 0, else return -1
 
417
 * @return int, if success, return EXIT_SUCCESS, else return -1
418
418
 */
419
419
static int ms_item_win_init(ms_conn_t *c)
420
420
{
458
458
 
459
459
  ms_warmup_num_init(c);
460
460
 
461
 
  return 0;
 
461
  return EXIT_SUCCESS;
462
462
} /* ms_item_win_init */
463
463
 
464
464
 
469
469
 *
470
470
 * @param c, pointer of the concurrency
471
471
 *
472
 
 * @return int, if success, return 0, else return -1
 
472
 * @return int, if success, return EXIT_SUCCESS, else return -1
473
473
 */
474
474
static int ms_conn_sock_init(ms_conn_t *c)
475
475
{
553
553
    return -1;
554
554
  }
555
555
 
556
 
  return 0;
 
556
  return EXIT_SUCCESS;
557
557
} /* ms_conn_sock_init */
558
558
 
559
559
 
563
563
 *
564
564
 * @param c, pointer of the concurrency
565
565
 *
566
 
 * @return int, if success, return 0, else return -1
 
566
 * @return int, if success, return EXIT_SUCCESS, else return -1
567
567
 */
568
568
static int ms_conn_event_init(ms_conn_t *c)
569
569
{
579
579
    return -1;
580
580
  }
581
581
 
582
 
  return 0;
 
582
  return EXIT_SUCCESS;
583
583
} /* ms_conn_event_init */
584
584
 
585
585
 
589
589
 *
590
590
 * @param c, pointer of the concurrency
591
591
 *
592
 
 * @return int, if success, return 0, else return -1
 
592
 * @return int, if success, return EXIT_SUCCESS, else return -1
593
593
 */
594
594
int ms_setup_conn(ms_conn_t *c)
595
595
{
613
613
    return -1;
614
614
  }
615
615
 
616
 
  return 0;
 
616
  return EXIT_SUCCESS;
617
617
} /* ms_setup_conn */
618
618
 
619
619
 
707
707
 *
708
708
 * @param ai, server address information
709
709
 *
710
 
 * @return int, if success, return 0, else return -1
 
710
 * @return int, if success, return EXIT_SUCCESS, else return -1
711
711
 */
712
712
static int ms_new_socket(struct addrinfo *ai)
713
713
{
771
771
 * @param is_udp, whether it's udp
772
772
 * @param ret_sfd, the connected socket file descriptor
773
773
 *
774
 
 * @return int, if success, return 0, else return -1
 
774
 * @return int, if success, return EXIT_SUCCESS, else return -1
775
775
 */
776
776
static int ms_network_connect(ms_conn_t *c,
777
777
                              char *srv_host_name,
894
894
 *
895
895
 * @param c, pointer of the concurrency
896
896
 *
897
 
 * @return int, if success, return 0, else return -1
 
897
 * @return int, if success, return EXIT_SUCCESS, else return -1
898
898
 */
899
899
static int ms_reconn(ms_conn_t *c)
900
900
{
984
984
    c->alive_sfds--;
985
985
  }
986
986
 
987
 
  return 0;
 
987
  return EXIT_SUCCESS;
988
988
} /* ms_reconn */
989
989
 
990
990
 
996
996
 *
997
997
 * @param c, pointer of the concurrency
998
998
 *
999
 
 * @return int, if success, return 0, else return -1
 
999
 * @return int, if success, return EXIT_SUCCESS, else return -1
1000
1000
 */
1001
1001
int ms_reconn_socks(ms_conn_t *c)
1002
1002
{
1010
1010
 
1011
1011
  if ((c->total_sfds == 1) || (c->total_sfds == c->alive_sfds))
1012
1012
  {
1013
 
    return 0;
 
1013
    return EXIT_SUCCESS;
1014
1014
  }
1015
1015
 
1016
1016
  for (uint32_t i= 0; i < c->total_sfds; i++)
1065
1065
    }
1066
1066
  }
1067
1067
 
1068
 
  return 0;
 
1068
  return EXIT_SUCCESS;
1069
1069
} /* ms_reconn_socks */
1070
1070
 
1071
1071
 
1137
1137
 * @param c, pointer of the concurrency
1138
1138
 * @param command, the string responded by server
1139
1139
 *
1140
 
 * @return int, if the command completed return 0, else return
 
1140
 * @return int, if the command completed return EXIT_SUCCESS, else return
1141
1141
 *         -1
1142
1142
 */
1143
1143
static int ms_ascii_process_line(ms_conn_t *c, char *command)
1312
1312
 *
1313
1313
 * @param c, pointer of the concurrency
1314
1314
 *
1315
 
 * @return int, if success, return 0, else return -1
 
1315
 * @return int, if success, return EXIT_SUCCESS, else return -1
1316
1316
 */
1317
1317
static int ms_try_read_line(ms_conn_t *c)
1318
1318
{
1322
1322
    if ((uint64_t)c->rbytes < sizeof(c->binary_header))
1323
1323
    {
1324
1324
      /* need more data! */
1325
 
      return 0;
 
1325
      return EXIT_SUCCESS;
1326
1326
    }
1327
1327
    else
1328
1328
    {
1352
1352
        fprintf(stderr, "Invalid magic:  %x\n",
1353
1353
                c->binary_header.response.magic);
1354
1354
        ms_conn_set_state(c, conn_closing);
1355
 
        return 0;
 
1355
        return EXIT_SUCCESS;
1356
1356
      }
1357
1357
 
1358
1358
      /* process this complete response */
1377
1377
    assert(c->rcurr <= (c->rbuf + c->rsize));
1378
1378
 
1379
1379
    if (c->rbytes == 0)
1380
 
      return 0;
 
1380
      return EXIT_SUCCESS;
1381
1381
 
1382
1382
    el= memchr(c->rcurr, '\n', (size_t)c->rbytes);
1383
1383
    if (! el)
1384
 
      return 0;
 
1384
      return EXIT_SUCCESS;
1385
1385
 
1386
1386
    cont= el + 1;
1387
1387
    if (((el - c->rcurr) > 1) && (*(el - 1) == '\r'))
1635
1635
 * close.
1636
1636
 * before reading, move the remaining incomplete fragment of a command
1637
1637
 * (if any) to the beginning of the buffer.
1638
 
 * return 0 if there's nothing to read on the first read.
 
1638
 * return EXIT_SUCCESS if there's nothing to read on the first read.
1639
1639
 */
1640
1640
 
1641
1641
/**
1646
1646
 * @param c, pointer of the concurrency
1647
1647
 *
1648
1648
 * @return int,
1649
 
 *         return 0 if there's nothing to read on the first read.
1650
 
 *         return 1 if get data
 
1649
 *         return EXIT_SUCCESS if there's nothing to read on the first read.
 
1650
 *         return EXIT_FAILURE if get data
1651
1651
 *         return -1 if error happens
1652
1652
 */
1653
1653
static int ms_try_read_network(ms_conn_t *c)
2013
2013
 *
2014
2014
 * @param c, pointer of the concurrency
2015
2015
 *
2016
 
 * @return int, if success, return 0, else return -1
 
2016
 * @return int, if success, return EXIT_SUCCESS, else return -1
2017
2017
 */
2018
2018
static int ms_add_msghdr(ms_conn_t *c)
2019
2019
{
2057
2057
    return ms_add_iov(c, NULL, UDP_HEADER_SIZE);
2058
2058
  }
2059
2059
 
2060
 
  return 0;
 
2060
  return EXIT_SUCCESS;
2061
2061
} /* ms_add_msghdr */
2062
2062
 
2063
2063
 
2067
2067
 *
2068
2068
 * @param c, pointer of the concurrency
2069
2069
 *
2070
 
 * @return int, if success, return 0, else return -1
 
2070
 * @return int, if success, return EXIT_SUCCESS, else return -1
2071
2071
 */
2072
2072
static int ms_ensure_iov_space(ms_conn_t *c)
2073
2073
{
2094
2094
    }
2095
2095
  }
2096
2096
 
2097
 
  return 0;
 
2097
  return EXIT_SUCCESS;
2098
2098
} /* ms_ensure_iov_space */
2099
2099
 
2100
2100
 
2106
2106
 * @param buf, the buffer includes data to send
2107
2107
 * @param len, the data length in the buffer
2108
2108
 *
2109
 
 * @return int, if success, return 0, else return -1
 
2109
 * @return int, if success, return EXIT_SUCCESS, else return -1
2110
2110
 */
2111
2111
static int ms_add_iov(ms_conn_t *c, const void *buf, int len)
2112
2112
{
2160
2160
  }
2161
2161
  while (leftover > 0);
2162
2162
 
2163
 
  return 0;
 
2163
  return EXIT_SUCCESS;
2164
2164
} /* ms_add_iov */
2165
2165
 
2166
2166
 
2169
2169
 *
2170
2170
 * @param c, pointer of the concurrency
2171
2171
 *
2172
 
 * @return int, if success, return 0, else return -1
 
2172
 * @return int, if success, return EXIT_SUCCESS, else return -1
2173
2173
 */
2174
2174
static int ms_build_udp_headers(ms_conn_t *c)
2175
2175
{
2220
2220
            + UDP_HEADER_SIZE));
2221
2221
  }
2222
2222
 
2223
 
  return 0;
 
2223
  return EXIT_SUCCESS;
2224
2224
} /* ms_build_udp_headers */
2225
2225
 
2226
2226
 
2725
2725
 * @param c, pointer of the concurrency
2726
2726
 * @param cmd, command(get or set )
2727
2727
 *
2728
 
 * @return int, if success, return the index, else return 0
 
2728
 * @return int, if success, return the index, else return EXIT_SUCCESS
2729
2729
 */
2730
2730
static uint32_t ms_get_rep_sock_index(ms_conn_t *c, int cmd)
2731
2731
{
2734
2734
 
2735
2735
  if (c->total_sfds == 1)
2736
2736
  {
2737
 
    return 0;
 
2737
    return EXIT_SUCCESS;
2738
2738
  }
2739
2739
 
2740
2740
  if (ms_setting.rep_write_srv == 0)
2803
2803
 *
2804
2804
 * @param c, pointer of the concurrency
2805
2805
 *
2806
 
 * @return int, if success, return 0, else return -1
 
2806
 * @return int, if success, return EXIT_SUCCESS, else return -1
2807
2807
 */
2808
2808
static int ms_update_conn_sock_event(ms_conn_t *c)
2809
2809
{
2867
2867
    }
2868
2868
  }
2869
2869
 
2870
 
  return 0;
 
2870
  return EXIT_SUCCESS;
2871
2871
} /* ms_update_conn_sock_event */
2872
2872
 
2873
2873
 
2879
2879
 * @param item, pointer of task item which includes the object
2880
2880
 *            information
2881
2881
 *
2882
 
 * @return int, if success, return 0, else return -1
 
2882
 * @return int, if success, return EXIT_SUCCESS, else return -1
2883
2883
 */
2884
2884
static int ms_build_ascii_write_buf_set(ms_conn_t *c, ms_task_item_t *item)
2885
2885
{
2924
2924
    return -1;
2925
2925
  }
2926
2926
 
2927
 
  return 0;
 
2927
  return EXIT_SUCCESS;
2928
2928
} /* ms_build_ascii_write_buf_set */
2929
2929
 
2930
2930
 
2935
2935
 * @param item, pointer of task item which includes the object
2936
2936
 *            information
2937
2937
 *
2938
 
 * @return int, if success, return 0, else return -1
 
2938
 * @return int, if success, return EXIT_SUCCESS, else return -1
2939
2939
 */
2940
2940
int ms_mcd_set(ms_conn_t *c, ms_task_item_t *item)
2941
2941
{
2979
2979
                  item->key_size + item->value_size);
2980
2980
  atomic_add_size(&ms_stats.cmd_set, 1);
2981
2981
 
2982
 
  return 0;
 
2982
  return EXIT_SUCCESS;
2983
2983
} /* ms_mcd_set */
2984
2984
 
2985
2985
 
2991
2991
 * @param item, pointer of task item which includes the object
2992
2992
 *            information
2993
2993
 *
2994
 
 * @return int, if success, return 0, else return -1
 
2994
 * @return int, if success, return EXIT_SUCCESS, else return -1
2995
2995
 */
2996
2996
static int ms_build_ascii_write_buf_get(ms_conn_t *c, ms_task_item_t *item)
2997
2997
{
3006
3006
    return -1;
3007
3007
  }
3008
3008
 
3009
 
  return 0;
 
3009
  return EXIT_SUCCESS;
3010
3010
} /* ms_build_ascii_write_buf_get */
3011
3011
 
3012
3012
 
3017
3017
 * @param item, pointer of task item which includes the object
3018
3018
 *            information
3019
3019
 *
3020
 
 * @return int, if success, return 0, else return -1
 
3020
 * @return int, if success, return EXIT_SUCCESS, else return -1
3021
3021
 */
3022
3022
int ms_mcd_get(ms_conn_t *c, ms_task_item_t *item)
3023
3023
{
3059
3059
 
3060
3060
  atomic_add_size(&ms_stats.cmd_get, 1);
3061
3061
 
3062
 
  return 0;
 
3062
  return EXIT_SUCCESS;
3063
3063
} /* ms_mcd_get */
3064
3064
 
3065
3065
 
3069
3069
 *
3070
3070
 * @param c, pointer of the concurrency
3071
3071
 *
3072
 
 * @return int, if success, return 0, else return -1
 
3072
 * @return int, if success, return EXIT_SUCCESS, else return -1
3073
3073
 */
3074
3074
static int ms_build_ascii_write_buf_mlget(ms_conn_t *c)
3075
3075
{
3100
3100
    return -1;
3101
3101
  }
3102
3102
 
3103
 
  return 0;
 
3103
  return EXIT_SUCCESS;
3104
3104
} /* ms_build_ascii_write_buf_mlget */
3105
3105
 
3106
3106
 
3109
3109
 *
3110
3110
 * @param c, pointer of the concurrency
3111
3111
 *
3112
 
 * @return int, if success, return 0, else return -1
 
3112
 * @return int, if success, return EXIT_SUCCESS, else return -1
3113
3113
 */
3114
3114
int ms_mcd_mlget(ms_conn_t *c)
3115
3115
{
3159
3159
    atomic_add_size(&ms_stats.cmd_get, 1);
3160
3160
  }
3161
3161
 
3162
 
  return 0;
 
3162
  return EXIT_SUCCESS;
3163
3163
} /* ms_mcd_mlget */
3164
3164
 
3165
3165
 
3172
3172
 *
3173
3173
 * @param c, pointer of the concurrency
3174
3174
 *
3175
 
 * @return int, if success, return 0, else return -1
 
3175
 * @return int, if success, return EXIT_SUCCESS, else return -1
3176
3176
 */
3177
3177
static int ms_bin_process_response(ms_conn_t *c)
3178
3178
{
3188
3188
  {
3189
3189
    c->rvbytes= (int32_t)bodylen;
3190
3190
    c->readval= true;
3191
 
    return 1;
 
3191
    return EXIT_FAILURE;
3192
3192
  }
3193
3193
  else
3194
3194
  {
3255
3255
    }
3256
3256
  }
3257
3257
 
3258
 
  return 0;
 
3258
  return EXIT_SUCCESS;
3259
3259
} /* ms_bin_process_response */
3260
3260
 
3261
3261
 
3321
3321
 * @param item, pointer of task item which includes the object
3322
3322
 *            information
3323
3323
 *
3324
 
 * @return int, if success, return 0, else return -1
 
3324
 * @return int, if success, return EXIT_SUCCESS, else return -1
3325
3325
 */
3326
3326
static int ms_build_bin_write_buf_set(ms_conn_t *c, ms_task_item_t *item)
3327
3327
{
3353
3353
  }
3354
3354
  ms_add_iov(c, &ms_setting.char_block[value_offset], item->value_size);
3355
3355
 
3356
 
  return 0;
 
3356
  return EXIT_SUCCESS;
3357
3357
} /* ms_build_bin_write_buf_set */
3358
3358
 
3359
3359
 
3365
3365
 * @param item, pointer of task item which includes the object
3366
3366
 *            information
3367
3367
 *
3368
 
 * @return int, if success, return 0, else return -1
 
3368
 * @return int, if success, return EXIT_SUCCESS, else return -1
3369
3369
 */
3370
3370
static int ms_build_bin_write_buf_get(ms_conn_t *c, ms_task_item_t *item)
3371
3371
{
3375
3375
                    (uint32_t)item->key_size);
3376
3376
  ms_add_key_to_iov(c, item);
3377
3377
 
3378
 
  return 0;
 
3378
  return EXIT_SUCCESS;
3379
3379
} /* ms_build_bin_write_buf_get */
3380
3380
 
3381
3381
 
3387
3387
 * @param item, pointer of task item which includes the object
3388
3388
 *            information
3389
3389
 *
3390
 
 * @return int, if success, return 0, else return -1
 
3390
 * @return int, if success, return EXIT_SUCCESS, else return -1
3391
3391
 */
3392
3392
static int ms_build_bin_write_buf_mlget(ms_conn_t *c)
3393
3393
{
3411
3411
 
3412
3412
  c->wcurr= c->wbuf;
3413
3413
 
3414
 
  return 0;
 
3414
  return EXIT_SUCCESS;
3415
3415
} /* ms_build_bin_write_buf_mlget */