mirror of
https://github.com/codership/wsrep-lib.git
synced 2025-07-27 09:01:50 +03:00
Finished dbsim integration with refactored client API.
This commit is contained in:
@ -3,3 +3,49 @@
|
||||
//
|
||||
|
||||
#include "db_client_service.hpp"
|
||||
#include "db_client.hpp"
|
||||
|
||||
int db::client_service::apply(wsrep::client_context&,
|
||||
const wsrep::const_buffer&)
|
||||
{
|
||||
db::client* client(client_context_.client());
|
||||
client->se_trx_.start(client);
|
||||
client->se_trx_.apply(client_context_.transaction());
|
||||
return 0;
|
||||
}
|
||||
|
||||
int db::client_service::commit(wsrep::client_context&,
|
||||
const wsrep::ws_handle&,
|
||||
const wsrep::ws_meta&)
|
||||
{
|
||||
db::client* client(client_context_.client());
|
||||
int ret(client_context_.before_commit());
|
||||
if (ret == 0) client->se_trx_.commit();
|
||||
ret = ret || client_context_.ordered_commit();
|
||||
ret = ret || client_context_.after_commit();
|
||||
return ret;
|
||||
}
|
||||
|
||||
int db::client_service::rollback(wsrep::client_context&)
|
||||
{
|
||||
db::client* client(client_context_.client());
|
||||
int ret(client_context_.before_rollback());
|
||||
assert(ret == 0);
|
||||
client->se_trx_.rollback();
|
||||
ret = client_context_.after_rollback();
|
||||
assert(ret == 0);
|
||||
return ret;
|
||||
}
|
||||
enum wsrep::provider::status
|
||||
db::client_service::replay(wsrep::client_context&,
|
||||
wsrep::transaction_context& transaction_context)
|
||||
{
|
||||
wsrep::client_applier_mode applier_mode(client_context_);
|
||||
auto ret(provider_.replay(transaction_context.ws_handle(),
|
||||
&client_context_));
|
||||
if (ret == wsrep::provider::success)
|
||||
{
|
||||
++client_context_.client()->stats_.replays;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
Reference in New Issue
Block a user