X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Fcsl%2Fparser.cc;h=62f7eaa7cb304af7720a997f035b62a0e3125935;hb=7a02267fc940f3f3431f2c5b7a648fe3577519a9;hp=855b6fdd8b2c50bbf9f387de2c341ea59c078aa1;hpb=1825425e12755baebb754a9c4a4df69e3cea0bc9;p=m6w6%2Flibmemcached diff --git a/libmemcached/csl/parser.cc b/libmemcached/csl/parser.cc index 855b6fdd..62f7eaa7 100644 --- a/libmemcached/csl/parser.cc +++ b/libmemcached/csl/parser.cc @@ -74,7 +74,7 @@ /* Copy the first part of user declarations. */ /* Line 268 of yacc.c */ -#line 36 "libmemcached/csl/parser.yy" +#line 52 "libmemcached/csl/parser.yy" #include @@ -540,13 +540,13 @@ static const yytype_int8 yyrhs[] = /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 172, 172, 173, 177, 179, 181, 183, 188, 193, - 197, 201, 212, 220, 228, 235, 239, 243, 247, 251, - 263, 270, 281, 288, 295, 302, 308, 312, 316, 320, - 324, 328, 332, 336, 340, 344, 348, 352, 359, 363, - 367, 371, 375, 379, 383, 387, 391, 395, 399, 403, - 410, 411, 416, 417, 422, 426, 430, 434, 438, 442, - 446, 450, 454, 461, 465, 472, 476, 480 + 0, 188, 188, 189, 193, 195, 197, 199, 204, 209, + 213, 217, 228, 238, 248, 257, 261, 265, 269, 273, + 285, 298, 311, 318, 325, 334, 340, 344, 348, 352, + 356, 360, 364, 368, 372, 376, 380, 384, 391, 395, + 399, 403, 407, 411, 415, 419, 423, 427, 431, 435, + 442, 443, 448, 449, 454, 458, 462, 466, 470, 474, + 478, 482, 486, 493, 497, 504, 508, 512 }; #endif @@ -1557,28 +1557,28 @@ yyreduce: case 4: /* Line 1806 of yacc.c */ -#line 178 "libmemcached/csl/parser.yy" +#line 194 "libmemcached/csl/parser.yy" { } break; case 5: /* Line 1806 of yacc.c */ -#line 180 "libmemcached/csl/parser.yy" +#line 196 "libmemcached/csl/parser.yy" { } break; case 6: /* Line 1806 of yacc.c */ -#line 182 "libmemcached/csl/parser.yy" +#line 198 "libmemcached/csl/parser.yy" { } break; case 7: /* Line 1806 of yacc.c */ -#line 184 "libmemcached/csl/parser.yy" +#line 200 "libmemcached/csl/parser.yy" { context->set_end(); YYACCEPT; @@ -1588,17 +1588,17 @@ yyreduce: case 8: /* Line 1806 of yacc.c */ -#line 189 "libmemcached/csl/parser.yy" +#line 205 "libmemcached/csl/parser.yy" { context->rc= MEMCACHED_PARSE_USER_ERROR; - parser_abort(context, NULL); + parser_abort(context, "ERROR called directly"); } break; case 9: /* Line 1806 of yacc.c */ -#line 194 "libmemcached/csl/parser.yy" +#line 210 "libmemcached/csl/parser.yy" { memcached_reset(context->memc); } @@ -1607,7 +1607,7 @@ yyreduce: case 10: /* Line 1806 of yacc.c */ -#line 198 "libmemcached/csl/parser.yy" +#line 214 "libmemcached/csl/parser.yy" { yydebug= 1; } @@ -1616,11 +1616,11 @@ yyreduce: case 11: /* Line 1806 of yacc.c */ -#line 202 "libmemcached/csl/parser.yy" +#line 218 "libmemcached/csl/parser.yy" { if ((context->rc= memcached_parse_configure_file(*context->memc, (yyvsp[(3) - (3)].string).c_str, (yyvsp[(3) - (3)].string).size)) != MEMCACHED_SUCCESS) { - parser_abort(context, NULL); + parser_abort(context, "Failed to parse configuration file"); } } break; @@ -1628,11 +1628,13 @@ yyreduce: case 12: /* Line 1806 of yacc.c */ -#line 213 "libmemcached/csl/parser.yy" +#line 229 "libmemcached/csl/parser.yy" { if (memcached_failed(context->rc= memcached_server_add_with_weight(context->memc, (yyvsp[(2) - (4)].server).c_str, (yyvsp[(3) - (4)].number), (yyvsp[(4) - (4)].number)))) { - parser_abort(context, NULL); + char buffer[1024]; + snprintf(buffer, sizeof(buffer), "Failed to add server: %s:%u", (yyvsp[(2) - (4)].server).c_str, uint32_t((yyvsp[(3) - (4)].number))); + parser_abort(context, buffer); } context->unset_server(); } @@ -1641,11 +1643,13 @@ yyreduce: case 13: /* Line 1806 of yacc.c */ -#line 221 "libmemcached/csl/parser.yy" +#line 239 "libmemcached/csl/parser.yy" { if (memcached_failed(context->rc= memcached_server_add_with_weight(context->memc, (yyvsp[(2) - (4)].server).c_str, (yyvsp[(3) - (4)].number), (yyvsp[(4) - (4)].number)))) { - parser_abort(context, NULL); + char buffer[1024]; + snprintf(buffer, sizeof(buffer), "Failed to add server: %s:%u", (yyvsp[(2) - (4)].server).c_str, uint32_t((yyvsp[(3) - (4)].number))); + parser_abort(context, buffer); } context->unset_server(); } @@ -1654,11 +1658,13 @@ yyreduce: case 14: /* Line 1806 of yacc.c */ -#line 229 "libmemcached/csl/parser.yy" +#line 249 "libmemcached/csl/parser.yy" { if (memcached_failed(context->rc= memcached_server_add_unix_socket_with_weight(context->memc, (yyvsp[(2) - (3)].string).c_str, (yyvsp[(3) - (3)].number)))) { - parser_abort(context, NULL); + char buffer[1024]; + snprintf(buffer, sizeof(buffer), "Failed to add server: %s", (yyvsp[(2) - (3)].string).c_str); + parser_abort(context, buffer); } } break; @@ -1666,7 +1672,7 @@ yyreduce: case 15: /* Line 1806 of yacc.c */ -#line 236 "libmemcached/csl/parser.yy" +#line 258 "libmemcached/csl/parser.yy" { memcached_set_configuration_file(context->memc, (yyvsp[(2) - (2)].string).c_str, (yyvsp[(2) - (2)].string).size); } @@ -1675,7 +1681,7 @@ yyreduce: case 16: /* Line 1806 of yacc.c */ -#line 240 "libmemcached/csl/parser.yy" +#line 262 "libmemcached/csl/parser.yy" { context->memc->configure.initial_pool_size= (yyvsp[(2) - (2)].number); } @@ -1684,7 +1690,7 @@ yyreduce: case 17: /* Line 1806 of yacc.c */ -#line 244 "libmemcached/csl/parser.yy" +#line 266 "libmemcached/csl/parser.yy" { context->memc->configure.max_pool_size= (yyvsp[(2) - (2)].number); } @@ -1693,7 +1699,7 @@ yyreduce: case 19: /* Line 1806 of yacc.c */ -#line 252 "libmemcached/csl/parser.yy" +#line 274 "libmemcached/csl/parser.yy" { if (memcached_callback_get(context->memc, MEMCACHED_CALLBACK_PREFIX_KEY, NULL)) { @@ -1710,8 +1716,14 @@ yyreduce: case 20: /* Line 1806 of yacc.c */ -#line 264 "libmemcached/csl/parser.yy" +#line 286 "libmemcached/csl/parser.yy" { + // Check to see if DISTRIBUTION has already been set + if ((context->rc= memcached_behavior_set(context->memc, MEMCACHED_BEHAVIOR_DISTRIBUTION, (yyvsp[(2) - (2)].distribution))) != MEMCACHED_SUCCESS) + { + parser_abort(context, "--DISTRIBUTION can only be called once"); + } + if ((context->rc= memcached_behavior_set(context->memc, MEMCACHED_BEHAVIOR_DISTRIBUTION, (yyvsp[(2) - (2)].distribution))) != MEMCACHED_SUCCESS) { parser_abort(context, memcached_last_error_message(context->memc));; @@ -1722,15 +1734,17 @@ yyreduce: case 21: /* Line 1806 of yacc.c */ -#line 271 "libmemcached/csl/parser.yy" +#line 299 "libmemcached/csl/parser.yy" { + // Check to see if DISTRIBUTION has already been set if ((context->rc= memcached_behavior_set(context->memc, MEMCACHED_BEHAVIOR_DISTRIBUTION, (yyvsp[(2) - (4)].distribution))) != MEMCACHED_SUCCESS) { - parser_abort(context, NULL); + parser_abort(context, "--DISTRIBUTION can only be called once"); } + if ((context->rc= memcached_behavior_set_distribution_hash(context->memc, (yyvsp[(4) - (4)].hash))) != MEMCACHED_SUCCESS) { - parser_abort(context, NULL); + parser_abort(context, "Unable to set the hash for the DISTRIBUTION requested"); } } break; @@ -1738,11 +1752,11 @@ yyreduce: case 22: /* Line 1806 of yacc.c */ -#line 282 "libmemcached/csl/parser.yy" +#line 312 "libmemcached/csl/parser.yy" { - if ((context->rc= memcached_behavior_set(context->memc, MEMCACHED_BEHAVIOR_HASH, (yyvsp[(2) - (2)].hash))) != MEMCACHED_SUCCESS) + if (context->set_hash((yyvsp[(2) - (2)].hash)) == false) { - parser_abort(context, NULL); + parser_abort(context, "--HASH can only be set once"); } } break; @@ -1750,11 +1764,11 @@ yyreduce: case 23: /* Line 1806 of yacc.c */ -#line 289 "libmemcached/csl/parser.yy" +#line 319 "libmemcached/csl/parser.yy" { if ((context->rc= memcached_behavior_set(context->memc, (yyvsp[(1) - (2)].behavior), (yyvsp[(2) - (2)].number))) != MEMCACHED_SUCCESS) { - parser_abort(context, NULL); + parser_abort(context, "Unable to set behavior"); } } break; @@ -1762,11 +1776,13 @@ yyreduce: case 24: /* Line 1806 of yacc.c */ -#line 296 "libmemcached/csl/parser.yy" +#line 326 "libmemcached/csl/parser.yy" { if ((context->rc= memcached_behavior_set(context->memc, (yyvsp[(1) - (1)].behavior), true)) != MEMCACHED_SUCCESS) { - parser_abort(context, NULL); + char buffer[1024]; + snprintf(buffer, sizeof(buffer), "Could not set: %s", libmemcached_string_behavior((yyvsp[(1) - (1)].behavior))); + parser_abort(context, buffer); } } break; @@ -1774,7 +1790,7 @@ yyreduce: case 25: /* Line 1806 of yacc.c */ -#line 303 "libmemcached/csl/parser.yy" +#line 335 "libmemcached/csl/parser.yy" { } break; @@ -1782,7 +1798,7 @@ yyreduce: case 26: /* Line 1806 of yacc.c */ -#line 309 "libmemcached/csl/parser.yy" +#line 341 "libmemcached/csl/parser.yy" { (yyval.behavior)= MEMCACHED_BEHAVIOR_REMOVE_FAILED_SERVERS; } @@ -1791,7 +1807,7 @@ yyreduce: case 27: /* Line 1806 of yacc.c */ -#line 313 "libmemcached/csl/parser.yy" +#line 345 "libmemcached/csl/parser.yy" { (yyval.behavior)= MEMCACHED_BEHAVIOR_CONNECT_TIMEOUT; } @@ -1800,7 +1816,7 @@ yyreduce: case 28: /* Line 1806 of yacc.c */ -#line 317 "libmemcached/csl/parser.yy" +#line 349 "libmemcached/csl/parser.yy" { (yyval.behavior)= MEMCACHED_BEHAVIOR_IO_MSG_WATERMARK; } @@ -1809,7 +1825,7 @@ yyreduce: case 29: /* Line 1806 of yacc.c */ -#line 321 "libmemcached/csl/parser.yy" +#line 353 "libmemcached/csl/parser.yy" { (yyval.behavior)= MEMCACHED_BEHAVIOR_IO_BYTES_WATERMARK; } @@ -1818,7 +1834,7 @@ yyreduce: case 30: /* Line 1806 of yacc.c */ -#line 325 "libmemcached/csl/parser.yy" +#line 357 "libmemcached/csl/parser.yy" { (yyval.behavior)= MEMCACHED_BEHAVIOR_IO_KEY_PREFETCH; } @@ -1827,7 +1843,7 @@ yyreduce: case 31: /* Line 1806 of yacc.c */ -#line 329 "libmemcached/csl/parser.yy" +#line 361 "libmemcached/csl/parser.yy" { (yyval.behavior)= MEMCACHED_BEHAVIOR_NUMBER_OF_REPLICAS; } @@ -1836,7 +1852,7 @@ yyreduce: case 32: /* Line 1806 of yacc.c */ -#line 333 "libmemcached/csl/parser.yy" +#line 365 "libmemcached/csl/parser.yy" { (yyval.behavior)= MEMCACHED_BEHAVIOR_POLL_TIMEOUT; } @@ -1845,7 +1861,7 @@ yyreduce: case 33: /* Line 1806 of yacc.c */ -#line 337 "libmemcached/csl/parser.yy" +#line 369 "libmemcached/csl/parser.yy" { (yyval.behavior)= MEMCACHED_BEHAVIOR_RCV_TIMEOUT; } @@ -1854,7 +1870,7 @@ yyreduce: case 34: /* Line 1806 of yacc.c */ -#line 341 "libmemcached/csl/parser.yy" +#line 373 "libmemcached/csl/parser.yy" { (yyval.behavior)= MEMCACHED_BEHAVIOR_RETRY_TIMEOUT; } @@ -1863,7 +1879,7 @@ yyreduce: case 35: /* Line 1806 of yacc.c */ -#line 345 "libmemcached/csl/parser.yy" +#line 377 "libmemcached/csl/parser.yy" { (yyval.behavior)= MEMCACHED_BEHAVIOR_SND_TIMEOUT; } @@ -1872,7 +1888,7 @@ yyreduce: case 36: /* Line 1806 of yacc.c */ -#line 349 "libmemcached/csl/parser.yy" +#line 381 "libmemcached/csl/parser.yy" { (yyval.behavior)= MEMCACHED_BEHAVIOR_SOCKET_RECV_SIZE; } @@ -1881,7 +1897,7 @@ yyreduce: case 37: /* Line 1806 of yacc.c */ -#line 353 "libmemcached/csl/parser.yy" +#line 385 "libmemcached/csl/parser.yy" { (yyval.behavior)= MEMCACHED_BEHAVIOR_SOCKET_SEND_SIZE; } @@ -1890,7 +1906,7 @@ yyreduce: case 38: /* Line 1806 of yacc.c */ -#line 360 "libmemcached/csl/parser.yy" +#line 392 "libmemcached/csl/parser.yy" { (yyval.behavior)= MEMCACHED_BEHAVIOR_BINARY_PROTOCOL; } @@ -1899,7 +1915,7 @@ yyreduce: case 39: /* Line 1806 of yacc.c */ -#line 364 "libmemcached/csl/parser.yy" +#line 396 "libmemcached/csl/parser.yy" { (yyval.behavior)= MEMCACHED_BEHAVIOR_BUFFER_REQUESTS; } @@ -1908,7 +1924,7 @@ yyreduce: case 40: /* Line 1806 of yacc.c */ -#line 368 "libmemcached/csl/parser.yy" +#line 400 "libmemcached/csl/parser.yy" { (yyval.behavior)= MEMCACHED_BEHAVIOR_HASH_WITH_PREFIX_KEY; } @@ -1917,7 +1933,7 @@ yyreduce: case 41: /* Line 1806 of yacc.c */ -#line 372 "libmemcached/csl/parser.yy" +#line 404 "libmemcached/csl/parser.yy" { (yyval.behavior)= MEMCACHED_BEHAVIOR_NOREPLY; } @@ -1926,7 +1942,7 @@ yyreduce: case 42: /* Line 1806 of yacc.c */ -#line 376 "libmemcached/csl/parser.yy" +#line 408 "libmemcached/csl/parser.yy" { (yyval.behavior)= MEMCACHED_BEHAVIOR_RANDOMIZE_REPLICA_READ; } @@ -1935,7 +1951,7 @@ yyreduce: case 43: /* Line 1806 of yacc.c */ -#line 380 "libmemcached/csl/parser.yy" +#line 412 "libmemcached/csl/parser.yy" { (yyval.behavior)= MEMCACHED_BEHAVIOR_SORT_HOSTS; } @@ -1944,7 +1960,7 @@ yyreduce: case 44: /* Line 1806 of yacc.c */ -#line 384 "libmemcached/csl/parser.yy" +#line 416 "libmemcached/csl/parser.yy" { (yyval.behavior)= MEMCACHED_BEHAVIOR_SUPPORT_CAS; } @@ -1953,7 +1969,7 @@ yyreduce: case 45: /* Line 1806 of yacc.c */ -#line 388 "libmemcached/csl/parser.yy" +#line 420 "libmemcached/csl/parser.yy" { (yyval.behavior)= MEMCACHED_BEHAVIOR_TCP_NODELAY; } @@ -1962,7 +1978,7 @@ yyreduce: case 46: /* Line 1806 of yacc.c */ -#line 392 "libmemcached/csl/parser.yy" +#line 424 "libmemcached/csl/parser.yy" { (yyval.behavior)= MEMCACHED_BEHAVIOR_TCP_KEEPALIVE; } @@ -1971,7 +1987,7 @@ yyreduce: case 47: /* Line 1806 of yacc.c */ -#line 396 "libmemcached/csl/parser.yy" +#line 428 "libmemcached/csl/parser.yy" { (yyval.behavior)= MEMCACHED_BEHAVIOR_TCP_KEEPIDLE; } @@ -1980,7 +1996,7 @@ yyreduce: case 48: /* Line 1806 of yacc.c */ -#line 400 "libmemcached/csl/parser.yy" +#line 432 "libmemcached/csl/parser.yy" { (yyval.behavior)= MEMCACHED_BEHAVIOR_USE_UDP; } @@ -1989,7 +2005,7 @@ yyreduce: case 49: /* Line 1806 of yacc.c */ -#line 404 "libmemcached/csl/parser.yy" +#line 436 "libmemcached/csl/parser.yy" { (yyval.behavior)= MEMCACHED_BEHAVIOR_VERIFY_KEY; } @@ -1998,35 +2014,35 @@ yyreduce: case 50: /* Line 1806 of yacc.c */ -#line 410 "libmemcached/csl/parser.yy" +#line 442 "libmemcached/csl/parser.yy" { (yyval.number)= MEMCACHED_DEFAULT_PORT;} break; case 51: /* Line 1806 of yacc.c */ -#line 412 "libmemcached/csl/parser.yy" +#line 444 "libmemcached/csl/parser.yy" { } break; case 52: /* Line 1806 of yacc.c */ -#line 416 "libmemcached/csl/parser.yy" +#line 448 "libmemcached/csl/parser.yy" { (yyval.number)= 1; } break; case 53: /* Line 1806 of yacc.c */ -#line 418 "libmemcached/csl/parser.yy" +#line 450 "libmemcached/csl/parser.yy" { } break; case 54: /* Line 1806 of yacc.c */ -#line 423 "libmemcached/csl/parser.yy" +#line 455 "libmemcached/csl/parser.yy" { (yyval.hash)= MEMCACHED_HASH_MD5; } @@ -2035,7 +2051,7 @@ yyreduce: case 55: /* Line 1806 of yacc.c */ -#line 427 "libmemcached/csl/parser.yy" +#line 459 "libmemcached/csl/parser.yy" { (yyval.hash)= MEMCACHED_HASH_CRC; } @@ -2044,7 +2060,7 @@ yyreduce: case 56: /* Line 1806 of yacc.c */ -#line 431 "libmemcached/csl/parser.yy" +#line 463 "libmemcached/csl/parser.yy" { (yyval.hash)= MEMCACHED_HASH_FNV1_64; } @@ -2053,7 +2069,7 @@ yyreduce: case 57: /* Line 1806 of yacc.c */ -#line 435 "libmemcached/csl/parser.yy" +#line 467 "libmemcached/csl/parser.yy" { (yyval.hash)= MEMCACHED_HASH_FNV1A_64; } @@ -2062,7 +2078,7 @@ yyreduce: case 58: /* Line 1806 of yacc.c */ -#line 439 "libmemcached/csl/parser.yy" +#line 471 "libmemcached/csl/parser.yy" { (yyval.hash)= MEMCACHED_HASH_FNV1_32; } @@ -2071,7 +2087,7 @@ yyreduce: case 59: /* Line 1806 of yacc.c */ -#line 443 "libmemcached/csl/parser.yy" +#line 475 "libmemcached/csl/parser.yy" { (yyval.hash)= MEMCACHED_HASH_FNV1A_32; } @@ -2080,7 +2096,7 @@ yyreduce: case 60: /* Line 1806 of yacc.c */ -#line 447 "libmemcached/csl/parser.yy" +#line 479 "libmemcached/csl/parser.yy" { (yyval.hash)= MEMCACHED_HASH_HSIEH; } @@ -2089,7 +2105,7 @@ yyreduce: case 61: /* Line 1806 of yacc.c */ -#line 451 "libmemcached/csl/parser.yy" +#line 483 "libmemcached/csl/parser.yy" { (yyval.hash)= MEMCACHED_HASH_MURMUR; } @@ -2098,7 +2114,7 @@ yyreduce: case 62: /* Line 1806 of yacc.c */ -#line 455 "libmemcached/csl/parser.yy" +#line 487 "libmemcached/csl/parser.yy" { (yyval.hash)= MEMCACHED_HASH_JENKINS; } @@ -2107,7 +2123,7 @@ yyreduce: case 63: /* Line 1806 of yacc.c */ -#line 462 "libmemcached/csl/parser.yy" +#line 494 "libmemcached/csl/parser.yy" { (yyval.string)= (yyvsp[(1) - (1)].string); } @@ -2116,7 +2132,7 @@ yyreduce: case 64: /* Line 1806 of yacc.c */ -#line 466 "libmemcached/csl/parser.yy" +#line 498 "libmemcached/csl/parser.yy" { (yyval.string)= (yyvsp[(1) - (1)].string); } @@ -2125,7 +2141,7 @@ yyreduce: case 65: /* Line 1806 of yacc.c */ -#line 473 "libmemcached/csl/parser.yy" +#line 505 "libmemcached/csl/parser.yy" { (yyval.distribution)= MEMCACHED_DISTRIBUTION_CONSISTENT; } @@ -2134,7 +2150,7 @@ yyreduce: case 66: /* Line 1806 of yacc.c */ -#line 477 "libmemcached/csl/parser.yy" +#line 509 "libmemcached/csl/parser.yy" { (yyval.distribution)= MEMCACHED_DISTRIBUTION_MODULA; } @@ -2143,7 +2159,7 @@ yyreduce: case 67: /* Line 1806 of yacc.c */ -#line 481 "libmemcached/csl/parser.yy" +#line 513 "libmemcached/csl/parser.yy" { (yyval.distribution)= MEMCACHED_DISTRIBUTION_RANDOM; } @@ -2152,7 +2168,7 @@ yyreduce: /* Line 1806 of yacc.c */ -#line 2156 "libmemcached/csl/parser.cc" +#line 2172 "libmemcached/csl/parser.cc" default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -2383,7 +2399,7 @@ yyreturn: /* Line 2067 of yacc.c */ -#line 486 "libmemcached/csl/parser.yy" +#line 518 "libmemcached/csl/parser.yy" void Context::start()