1
0
mirror of https://github.com/codership/wsrep-lib.git synced 2025-04-27 18:56:49 +03:00
2018-07-10 14:01:41 +03:00

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