nghttpx: Convert MemcachedStatusCode to enum class
This commit is contained in:
parent
0c4e9fef29
commit
d68edf56c0
|
@ -120,7 +120,8 @@ namespace {
|
||||||
void clear_request(std::deque<std::unique_ptr<MemcachedRequest>> &q) {
|
void clear_request(std::deque<std::unique_ptr<MemcachedRequest>> &q) {
|
||||||
for (auto &req : q) {
|
for (auto &req : q) {
|
||||||
if (req->cb) {
|
if (req->cb) {
|
||||||
req->cb(req.get(), MemcachedResult(MEMCACHED_ERR_EXT_NETWORK_ERROR));
|
req->cb(req.get(),
|
||||||
|
MemcachedResult(MemcachedStatusCode::EXT_NETWORK_ERROR));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
q.clear();
|
q.clear();
|
||||||
|
@ -451,7 +452,8 @@ int MemcachedConnection::parse_packet() {
|
||||||
parse_state_.extralen = *in++;
|
parse_state_.extralen = *in++;
|
||||||
// skip 1 byte reserved data type
|
// skip 1 byte reserved data type
|
||||||
++in;
|
++in;
|
||||||
parse_state_.status_code = util::get_uint16(in);
|
parse_state_.status_code =
|
||||||
|
static_cast<MemcachedStatusCode>(util::get_uint16(in));
|
||||||
in += 2;
|
in += 2;
|
||||||
parse_state_.totalbody = util::get_uint32(in);
|
parse_state_.totalbody = util::get_uint32(in);
|
||||||
in += 4;
|
in += 4;
|
||||||
|
@ -481,7 +483,8 @@ int MemcachedConnection::parse_packet() {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (parse_state_.op == MemcachedOp::GET &&
|
if (parse_state_.op == MemcachedOp::GET &&
|
||||||
parse_state_.status_code == 0 && parse_state_.extralen == 0) {
|
parse_state_.status_code == MemcachedStatusCode::NO_ERROR &&
|
||||||
|
parse_state_.extralen == 0) {
|
||||||
MCLOG(WARN, this) << "response for GET does not have extra";
|
MCLOG(WARN, this) << "response for GET does not have extra";
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -538,9 +541,9 @@ int MemcachedConnection::parse_packet() {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (LOG_ENABLED(INFO)) {
|
if (LOG_ENABLED(INFO)) {
|
||||||
if (parse_state_.status_code) {
|
if (parse_state_.status_code != MemcachedStatusCode::NO_ERROR) {
|
||||||
MCLOG(INFO, this)
|
MCLOG(INFO, this) << "response returned error status: "
|
||||||
<< "response returned error status: " << parse_state_.status_code;
|
<< static_cast<uint16_t>(parse_state_.status_code);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -44,6 +44,7 @@ namespace shrpx {
|
||||||
|
|
||||||
struct MemcachedRequest;
|
struct MemcachedRequest;
|
||||||
enum class MemcachedOp : uint8_t;
|
enum class MemcachedOp : uint8_t;
|
||||||
|
enum class MemcachedStatusCode : uint16_t;
|
||||||
|
|
||||||
enum class MemcachedParseState {
|
enum class MemcachedParseState {
|
||||||
HEADER24,
|
HEADER24,
|
||||||
|
@ -69,7 +70,7 @@ struct MemcachedParseContext {
|
||||||
// Parser state; see enum above
|
// Parser state; see enum above
|
||||||
MemcachedParseState state;
|
MemcachedParseState state;
|
||||||
// status_code in response
|
// status_code in response
|
||||||
int status_code;
|
MemcachedStatusCode status_code;
|
||||||
// op in response
|
// op in response
|
||||||
MemcachedOp op;
|
MemcachedOp op;
|
||||||
};
|
};
|
||||||
|
|
|
@ -31,18 +31,18 @@
|
||||||
|
|
||||||
namespace shrpx {
|
namespace shrpx {
|
||||||
|
|
||||||
enum MemcachedStatusCode {
|
enum class MemcachedStatusCode : uint16_t {
|
||||||
MEMCACHED_ERR_NO_ERROR,
|
NO_ERROR,
|
||||||
MEMCACHED_ERR_EXT_NETWORK_ERROR = 0x1001,
|
EXT_NETWORK_ERROR = 0x1001,
|
||||||
};
|
};
|
||||||
|
|
||||||
struct MemcachedResult {
|
struct MemcachedResult {
|
||||||
MemcachedResult(int status_code) : status_code(status_code) {}
|
MemcachedResult(MemcachedStatusCode status_code) : status_code(status_code) {}
|
||||||
MemcachedResult(int status_code, std::vector<uint8_t> value)
|
MemcachedResult(MemcachedStatusCode status_code, std::vector<uint8_t> value)
|
||||||
: value(std::move(value)), status_code(status_code) {}
|
: value(std::move(value)), status_code(status_code) {}
|
||||||
|
|
||||||
std::vector<uint8_t> value;
|
std::vector<uint8_t> value;
|
||||||
int status_code;
|
MemcachedStatusCode status_code;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace shrpx
|
} // namespace shrpx
|
||||||
|
|
|
@ -343,12 +343,14 @@ int tls_session_new_cb(SSL *ssl, SSL_SESSION *session) {
|
||||||
req->cb = [](MemcachedRequest *req, MemcachedResult res) {
|
req->cb = [](MemcachedRequest *req, MemcachedResult res) {
|
||||||
if (LOG_ENABLED(INFO)) {
|
if (LOG_ENABLED(INFO)) {
|
||||||
LOG(INFO) << "Memcached: session cache done. key=" << req->key
|
LOG(INFO) << "Memcached: session cache done. key=" << req->key
|
||||||
<< ", status_code=" << res.status_code << ", value="
|
<< ", status_code=" << static_cast<uint16_t>(res.status_code)
|
||||||
|
<< ", value="
|
||||||
<< std::string(std::begin(res.value), std::end(res.value));
|
<< std::string(std::begin(res.value), std::end(res.value));
|
||||||
}
|
}
|
||||||
if (res.status_code != 0) {
|
if (res.status_code != MemcachedStatusCode::NO_ERROR) {
|
||||||
LOG(WARN) << "Memcached: failed to cache session key=" << req->key
|
LOG(WARN) << "Memcached: failed to cache session key=" << req->key
|
||||||
<< ", status_code=" << res.status_code << ", value="
|
<< ", status_code=" << static_cast<uint16_t>(res.status_code)
|
||||||
|
<< ", value="
|
||||||
<< std::string(std::begin(res.value), std::end(res.value));
|
<< std::string(std::begin(res.value), std::end(res.value));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -404,7 +406,8 @@ SSL_SESSION *tls_session_get_cb(SSL *ssl,
|
||||||
util::format_hex(balloc, StringRef{id, static_cast<size_t>(idlen)});
|
util::format_hex(balloc, StringRef{id, static_cast<size_t>(idlen)});
|
||||||
req->cb = [conn](MemcachedRequest *, MemcachedResult res) {
|
req->cb = [conn](MemcachedRequest *, MemcachedResult res) {
|
||||||
if (LOG_ENABLED(INFO)) {
|
if (LOG_ENABLED(INFO)) {
|
||||||
LOG(INFO) << "Memcached: returned status code " << res.status_code;
|
LOG(INFO) << "Memcached: returned status code "
|
||||||
|
<< static_cast<uint16_t>(res.status_code);
|
||||||
}
|
}
|
||||||
|
|
||||||
// We might stop reading, so start it again
|
// We might stop reading, so start it again
|
||||||
|
@ -415,7 +418,7 @@ SSL_SESSION *tls_session_get_cb(SSL *ssl,
|
||||||
ev_timer_again(conn->loop, &conn->wt);
|
ev_timer_again(conn->loop, &conn->wt);
|
||||||
|
|
||||||
conn->tls.cached_session_lookup_req = nullptr;
|
conn->tls.cached_session_lookup_req = nullptr;
|
||||||
if (res.status_code != 0) {
|
if (res.status_code != MemcachedStatusCode::NO_ERROR) {
|
||||||
conn->tls.handshake_state = TLSHandshakeState::CANCEL_SESSION_CACHE;
|
conn->tls.handshake_state = TLSHandshakeState::CANCEL_SESSION_CACHE;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -275,9 +275,9 @@ void memcached_get_ticket_key_cb(struct ev_loop *loop, ev_timer *w,
|
||||||
req->op = MemcachedOp::GET;
|
req->op = MemcachedOp::GET;
|
||||||
req->cb = [conn_handler, w](MemcachedRequest *req, MemcachedResult res) {
|
req->cb = [conn_handler, w](MemcachedRequest *req, MemcachedResult res) {
|
||||||
switch (res.status_code) {
|
switch (res.status_code) {
|
||||||
case MEMCACHED_ERR_NO_ERROR:
|
case MemcachedStatusCode::NO_ERROR:
|
||||||
break;
|
break;
|
||||||
case MEMCACHED_ERR_EXT_NETWORK_ERROR:
|
case MemcachedStatusCode::EXT_NETWORK_ERROR:
|
||||||
conn_handler->on_tls_ticket_key_network_error(w);
|
conn_handler->on_tls_ticket_key_network_error(w);
|
||||||
return;
|
return;
|
||||||
default:
|
default:
|
||||||
|
|
Loading…
Reference in New Issue