1
0
mirror of https://github.com/codership/wsrep-lib.git synced 2025-06-13 04:01:32 +03:00
Files
wsrep-lib/include/wsrep/key.hpp
Teemu Ollakka 9e8e6d47ba * Unit test for SR 2PC
* Removed redundant data class
* Introduced const_buffer and mutable_buffer
* Transaction context and client context interface refactoring
2018-06-12 18:04:32 +03:00

63 lines
1.2 KiB
C++

//
// Copyright (C) 2018 Codership Oy <info@codership.com>
//
#ifndef WSREP_KEY_HPP
#define WSREP_KEY_HPP
#include "exception.hpp"
#include "buffer.hpp"
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_;
};
}
#endif // WSREP_KEY_HPP