Make execute_session_command virtual
Making the function allows higher level checking to be done by the derived class. The readwritesplit does some of the reply bookkeeping for session commands in the function. This makes their execution less prone for errors as the states are always updated correctly whenever a session command is executed.
This commit is contained in:
@ -63,7 +63,7 @@ public:
|
|||||||
*
|
*
|
||||||
* @return True if the command was executed successfully
|
* @return True if the command was executed successfully
|
||||||
*/
|
*/
|
||||||
bool execute_session_command();
|
virtual bool execute_session_command();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Add a new session command to the tail of the command queue
|
* @brief Add a new session command to the tail of the command queue
|
||||||
|
@ -178,6 +178,18 @@ public:
|
|||||||
m_reply_state = state;
|
m_reply_state = state;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool execute_session_command()
|
||||||
|
{
|
||||||
|
bool rval = mxs::Backend::execute_session_command();
|
||||||
|
|
||||||
|
if (rval)
|
||||||
|
{
|
||||||
|
set_reply_state(REPLY_STATE_START);
|
||||||
|
}
|
||||||
|
|
||||||
|
return rval;
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
reply_state_t m_reply_state;
|
reply_state_t m_reply_state;
|
||||||
};
|
};
|
||||||
|
@ -263,7 +263,6 @@ bool route_session_write(ROUTER_CLIENT_SES *rses, GWBUF *querybuf, uint8_t comma
|
|||||||
|
|
||||||
if (expecting_response)
|
if (expecting_response)
|
||||||
{
|
{
|
||||||
bref->set_reply_state(REPLY_STATE_START);
|
|
||||||
rses->expected_responses++;
|
rses->expected_responses++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user