MCPcopy Create free account
hub / github.com/ceph/ceph / do_request

Method do_request

src/common/admin_socket_client.cc:136–176  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

134}
135
136std::string AdminSocketClient::do_request(std::string request, std::string *result)
137{
138 int socket_fd = 0, res;
139 std::string buffer;
140 uint32_t message_size_raw, message_size;
141
142 std::string err = asok_connect(m_path, &socket_fd);
143 if (!err.empty()) {
144 goto out;
145 }
146 err = asok_request(socket_fd, request);
147 if (!err.empty()) {
148 goto done;
149 }
150 res = safe_recv_exact(socket_fd, &message_size_raw,
151 sizeof(message_size_raw));
152 if (res < 0) {
153 int e = res;
154 ostringstream oss;
155 oss << "safe_recv(" << socket_fd << ") failed to read message size: "
156 << cpp_strerror(e);
157 err = oss.str();
158 goto done;
159 }
160 message_size = ntohl(message_size_raw);
161 buffer.resize(message_size, 0);
162 res = safe_recv_exact(socket_fd, &buffer[0], message_size);
163 if (res < 0) {
164 int e = res;
165 ostringstream oss;
166 oss << "safe_recv(" << socket_fd << ") failed: " << cpp_strerror(e);
167 err = oss.str();
168 goto done;
169 }
170 //printf("MESSAGE FROM SERVER: %s\n", buffer.c_str());
171 std::swap(*result, buffer);
172done:
173 compat_closesocket(socket_fd);
174 out:
175 return err;
176}

Callers

nothing calls this directly

Calls 9

asok_connectFunction · 0.85
asok_requestFunction · 0.85
safe_recv_exactFunction · 0.85
cpp_strerrorFunction · 0.85
compat_closesocketFunction · 0.85
swapFunction · 0.70
emptyMethod · 0.45
strMethod · 0.45
resizeMethod · 0.45

Tested by

no test coverage detected