mirror of
https://github.com/codership/wsrep-lib.git
synced 2025-04-27 18:56:49 +03:00
69 lines
1.3 KiB
C++
69 lines
1.3 KiB
C++
//
|
|
// Copyright (C) 2018 Codership Oy <info@codership.com>
|
|
//
|
|
|
|
#ifndef WSREP_KEY_HPP
|
|
#define WSREP_KEY_HPP
|
|
|
|
#include "exception.hpp"
|
|
#include "buffer.hpp"
|
|
|
|
#include <iosfwd>
|
|
|
|
namespace wsrep
|
|
{
|
|
class key
|
|
{
|
|
public:
|
|
enum type
|
|
{
|
|
shared,
|
|
semi_shared,
|
|
semi_exclusive,
|
|
exclusive
|
|
};
|
|
|
|
key(enum type type)
|
|
: type_(type)
|
|
, key_parts_()
|
|
, key_parts_len_()
|
|
{ }
|
|
|
|
void append_key_part(const void* ptr, size_t len)
|
|
{
|
|
if (key_parts_len_ == 3)
|
|
{
|
|
throw wsrep::runtime_error("key parts exceed maximum of 3");
|
|
}
|
|
key_parts_[key_parts_len_] = wsrep::const_buffer(ptr, len);
|
|
++key_parts_len_;
|
|
}
|
|
|
|
enum type type() const
|
|
{
|
|
return type_;
|
|
}
|
|
|
|
size_t size() const
|
|
{
|
|
return key_parts_len_;
|
|
}
|
|
|
|
const wsrep::const_buffer* key_parts() const
|
|
{
|
|
return key_parts_;
|
|
}
|
|
private:
|
|
|
|
enum type type_;
|
|
wsrep::const_buffer key_parts_[3];
|
|
size_t key_parts_len_;
|
|
};
|
|
|
|
typedef std::vector<wsrep::key> key_array;
|
|
|
|
std::ostream& operator<<(std::ostream&, const wsrep::key&);
|
|
}
|
|
|
|
#endif // WSREP_KEY_HPP
|