MXS-1474 Use enum instead of boolean

Clearer for the reader with an explicit value indicating the desired
action, instrad of a boolean whose meaning is implicit.
This commit is contained in:
Johan Wikman
2017-10-25 14:21:37 +03:00
parent 20bb825882
commit 93edc230f9
2 changed files with 21 additions and 14 deletions

View File

@ -239,7 +239,7 @@ int CacheFilterSession::routeQuery(GWBUF* pPacket)
ss_dassert(GWBUF_LENGTH(pPacket) >= MYSQL_HEADER_LEN + 1); ss_dassert(GWBUF_LENGTH(pPacket) >= MYSQL_HEADER_LEN + 1);
ss_dassert(MYSQL_GET_PAYLOAD_LEN(pData) + MYSQL_HEADER_LEN == GWBUF_LENGTH(pPacket)); ss_dassert(MYSQL_GET_PAYLOAD_LEN(pData) + MYSQL_HEADER_LEN == GWBUF_LENGTH(pPacket));
bool fetch_from_server = true; routing_action_t action = ROUTING_CONTINUE;
reset_response_state(); reset_response_state();
m_state = CACHE_IGNORING_RESPONSE; m_state = CACHE_IGNORING_RESPONSE;
@ -287,14 +287,14 @@ int CacheFilterSession::routeQuery(GWBUF* pPacket)
break; break;
case MXS_COM_QUERY: case MXS_COM_QUERY:
fetch_from_server = route_COM_QUERY(pPacket); action = route_COM_QUERY(pPacket);
break; break;
default: default:
break; break;
} }
if (fetch_from_server) if (action == ROUTING_CONTINUE)
{ {
rv = m_down.routeQuery(pPacket); rv = m_down.routeQuery(pPacket);
} }
@ -899,15 +899,16 @@ bool CacheFilterSession::should_consult_cache(GWBUF* pPacket)
* *
* @param pPacket A contiguousCOM_QUERY packet. * @param pPacket A contiguousCOM_QUERY packet.
* *
* @return True if the data should be fetched from the backend, * @return ROUTING_ABORT if the processing of the packet should be aborted
* false otherwise. * (as the data is obtained from the cache) or
* ROUTING_CONTINUE if the normal processing should continue.
*/ */
bool CacheFilterSession::route_COM_QUERY(GWBUF* pPacket) CacheFilterSession::routing_action_t CacheFilterSession::route_COM_QUERY(GWBUF* pPacket)
{ {
ss_debug(uint8_t* pData = static_cast<uint8_t*>(GWBUF_DATA(pPacket))); ss_debug(uint8_t* pData = static_cast<uint8_t*>(GWBUF_DATA(pPacket)));
ss_dassert((int)MYSQL_GET_COMMAND(pData) == MXS_COM_QUERY); ss_dassert((int)MYSQL_GET_COMMAND(pData) == MXS_COM_QUERY);
bool fetch_from_server = true; routing_action_t action = ROUTING_CONTINUE;
if (should_consult_cache(pPacket)) if (should_consult_cache(pPacket))
{ {
@ -943,7 +944,7 @@ bool CacheFilterSession::route_COM_QUERY(GWBUF* pPacket)
gwbuf_free(pResponse); gwbuf_free(pResponse);
m_refreshing = true; m_refreshing = true;
fetch_from_server = true; action = ROUTING_CONTINUE;
} }
else else
{ {
@ -954,7 +955,7 @@ bool CacheFilterSession::route_COM_QUERY(GWBUF* pPacket)
MXS_NOTICE("Cache data is stale but returning it, fresh " MXS_NOTICE("Cache data is stale but returning it, fresh "
"data is being fetched already."); "data is being fetched already.");
} }
fetch_from_server = false; action = ROUTING_ABORT;
} }
} }
else else
@ -963,15 +964,15 @@ bool CacheFilterSession::route_COM_QUERY(GWBUF* pPacket)
{ {
MXS_NOTICE("Using fresh data from cache."); MXS_NOTICE("Using fresh data from cache.");
} }
fetch_from_server = false; action = ROUTING_ABORT;
} }
} }
else else
{ {
fetch_from_server = true; action = ROUTING_CONTINUE;
} }
if (fetch_from_server) if (action == ROUTING_CONTINUE)
{ {
m_state = CACHE_EXPECTING_RESPONSE; m_state = CACHE_EXPECTING_RESPONSE;
} }
@ -1010,5 +1011,5 @@ bool CacheFilterSession::route_COM_QUERY(GWBUF* pPacket)
} }
} }
return fetch_from_server; return action;
} }

View File

@ -111,7 +111,13 @@ private:
bool should_consult_cache(GWBUF* pPacket); bool should_consult_cache(GWBUF* pPacket);
bool route_COM_QUERY(GWBUF* pPacket); enum routing_action_t
{
ROUTING_ABORT, /**< Abort normal routing activity, data is coming from cache. */
ROUTING_CONTINUE, /**< Continue normal routing activity. */
};
routing_action_t route_COM_QUERY(GWBUF* pPacket);
private: private:
CacheFilterSession(MXS_SESSION* pSession, Cache* pCache, char* zDefaultDb); CacheFilterSession(MXS_SESSION* pSession, Cache* pCache, char* zDefaultDb);