| 96 | } |
| 97 | |
| 98 | bool redis_role::add_one_slave(const redis_result* a, redis_role4master& out) |
| 99 | { |
| 100 | string buf; |
| 101 | size_t size; |
| 102 | const redis_result** children = a->get_children(&size); |
| 103 | if (size < 3) { |
| 104 | logger_error("invalid size=%d", (int) size); |
| 105 | return false; |
| 106 | } |
| 107 | |
| 108 | redis_role4slave slave; |
| 109 | |
| 110 | if (children[0]->get_type() != REDIS_RESULT_STRING) { |
| 111 | logger_error("no ip"); |
| 112 | return false; |
| 113 | } |
| 114 | children[0]->argv_to_string(buf); |
| 115 | slave.set_ip(buf); |
| 116 | |
| 117 | if (children[1]->get_type() != REDIS_RESULT_STRING) { |
| 118 | logger_error("no port"); |
| 119 | return false; |
| 120 | } |
| 121 | buf.clear(); |
| 122 | children[1]->argv_to_string(buf); |
| 123 | slave.set_port(atoi(buf.c_str())); |
| 124 | |
| 125 | if (children[2]->get_type() != REDIS_RESULT_STRING) { |
| 126 | logger_error("no offset"); |
| 127 | return false; |
| 128 | } |
| 129 | buf.clear(); |
| 130 | children[2]->argv_to_string(buf); |
| 131 | slave.set_offset(acl_atoi64(buf.c_str())); |
| 132 | |
| 133 | out.add_slave(slave); |
| 134 | return true; |
| 135 | } |
| 136 | |
| 137 | bool redis_role::role_slave(const redis_result** a, size_t n) |
| 138 | { |
nothing calls this directly
no test coverage detected