mirror of
https://github.com/codership/wsrep-lib.git
synced 2025-07-28 20:02:00 +03:00
Removed wsrep_api.h dependency from view.hpp
This commit is contained in:
@ -4,6 +4,7 @@
|
||||
|
||||
add_library(wsrep-lib
|
||||
client_state.cpp
|
||||
gtid.cpp
|
||||
id.cpp
|
||||
logger.cpp
|
||||
provider.cpp
|
||||
|
12
src/gtid.cpp
Normal file
12
src/gtid.cpp
Normal file
@ -0,0 +1,12 @@
|
||||
//
|
||||
// Copyright (C) 2018 Codership Oy <info@codership.com>
|
||||
//
|
||||
|
||||
#include "wsrep/gtid.hpp"
|
||||
|
||||
#include <iostream>
|
||||
|
||||
std::ostream& wsrep::operator<<(std::ostream& os, const wsrep::gtid& gtid)
|
||||
{
|
||||
return (os << gtid.id() << ":" << gtid.seqno());
|
||||
}
|
@ -1,31 +0,0 @@
|
||||
//
|
||||
// Copyright (C) 2018 Codership Oy <info@codership.com>
|
||||
//
|
||||
|
||||
#ifndef WSREP_PROVIDER_IMPL_HPP
|
||||
#define WSREP_PROVIDER_IMPL_HPP
|
||||
|
||||
#include <wsrep_api.h>
|
||||
|
||||
namespace wsrep
|
||||
{
|
||||
// Abstract interface for provider implementations
|
||||
class provider_impl
|
||||
{
|
||||
public:
|
||||
virtual int start_transaction(wsrep_ws_handle_t*) = 0;
|
||||
virtual int append_key(wsrep_ws_handle_t*, const wsrep_key_t*) = 0;
|
||||
virtual int append_data(wsrep_ws_handle_t*, const wsrep_buf_t*) = 0;
|
||||
virtual wsrep_status_t
|
||||
certify(wsrep_conn_id_t, wsrep_ws_handle_t*,
|
||||
uint32_t,
|
||||
wsrep_trx_meta_t*) = 0;
|
||||
virtual int rollback(const wsrep_trx_id_t) = 0;
|
||||
virtual wsrep_status commit_order_enter(wsrep_ws_handle_t*) = 0;
|
||||
virtual int commit_order_leave(wsrep_ws_handle_t*) = 0;
|
||||
virtual int release(wsrep_ws_handle_t*) = 0;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
#endif // WSREP_PROVIDER_IMPL_HPP
|
@ -87,7 +87,7 @@ void wsrep::server_state::on_connect()
|
||||
void wsrep::server_state::on_view(const wsrep::view& view)
|
||||
{
|
||||
wsrep::log() << "================================================\nView:\n"
|
||||
<< "id: " << view.id() << "\n"
|
||||
<< "id: " << view.state_id() << "\n"
|
||||
<< "status: " << view.status() << "\n"
|
||||
<< "own_index: " << view.own_index() << "\n"
|
||||
<< "final: " << view.final() << "\n"
|
||||
|
@ -231,6 +231,54 @@ namespace
|
||||
wsrep_trx_meta_t trx_meta_;
|
||||
};
|
||||
|
||||
enum wsrep::view::status map_view_status_from_native(
|
||||
wsrep_view_status_t status)
|
||||
{
|
||||
switch (status)
|
||||
{
|
||||
case WSREP_VIEW_PRIMARY: return wsrep::view::primary;
|
||||
case WSREP_VIEW_NON_PRIMARY: return wsrep::view::non_primary;
|
||||
case WSREP_VIEW_DISCONNECTED: return wsrep::view::disconnected;
|
||||
default: throw wsrep::runtime_error("Unknown view status");
|
||||
}
|
||||
}
|
||||
|
||||
/** @todo Currently capabilities defined in provider.hpp
|
||||
* are one to one with wsrep_api.h. However, the mapping should
|
||||
* be made explicit. */
|
||||
int map_capabilities_from_native(wsrep_cap_t capabilities)
|
||||
{
|
||||
return capabilities;
|
||||
}
|
||||
wsrep::view view_from_native(const wsrep_view_info& view_info)
|
||||
{
|
||||
std::vector<wsrep::view::member> members;
|
||||
for (int i(0); i < view_info.memb_num; ++i)
|
||||
{
|
||||
wsrep::id id(view_info.members[i].id.data, sizeof(view_info.members[i].id.data));
|
||||
std::string name(
|
||||
view_info.members[i].name,
|
||||
strnlen(view_info.members[i].name,
|
||||
sizeof(view_info.members[i].name)));
|
||||
std::string incoming(
|
||||
view_info.members[i].incoming,
|
||||
strnlen(view_info.members[i].incoming,
|
||||
sizeof(view_info.members[i].incoming)));
|
||||
members.push_back(wsrep::view::member(id, name, incoming));
|
||||
}
|
||||
return wsrep::view(
|
||||
wsrep::gtid(
|
||||
wsrep::id(view_info.state_id.uuid.data,
|
||||
sizeof(view_info.state_id.uuid.data)),
|
||||
wsrep::seqno(view_info.state_id.seqno)),
|
||||
wsrep::seqno(view_info.view),
|
||||
map_view_status_from_native(view_info.status),
|
||||
map_capabilities_from_native(view_info.capabilities),
|
||||
view_info.my_idx,
|
||||
view_info.proto_ver,
|
||||
members);
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
// Callbacks //
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
@ -269,7 +317,7 @@ namespace
|
||||
*reinterpret_cast<wsrep::server_state*>(app_ctx));
|
||||
try
|
||||
{
|
||||
wsrep::view view(*view_info);
|
||||
wsrep::view view(view_from_native(*view_info));
|
||||
server_state.on_view(view);
|
||||
return WSREP_CB_SUCCESS;
|
||||
}
|
||||
|
@ -7,7 +7,7 @@
|
||||
|
||||
#include "wsrep/provider.hpp"
|
||||
|
||||
#include <wsrep_api.h>
|
||||
struct wsrep_st;
|
||||
|
||||
namespace wsrep
|
||||
{
|
||||
@ -49,7 +49,7 @@ namespace wsrep
|
||||
private:
|
||||
wsrep_provider_v26(const wsrep_provider_v26&);
|
||||
wsrep_provider_v26& operator=(const wsrep_provider_v26);
|
||||
wsrep_t* wsrep_;
|
||||
struct wsrep_st* wsrep_;
|
||||
};
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user