mirror of
https://github.com/matrix-construct/construct
synced 2024-10-01 05:08:59 +02:00
ircd::buffer: Add unique to shared buffer conversion.
This commit is contained in:
parent
a9984d8b7a
commit
7e3b5db06a
1 changed files with 31 additions and 13 deletions
|
@ -19,6 +19,7 @@ struct ircd::buffer::shared_buffer
|
|||
,buffer
|
||||
{
|
||||
shared_buffer(const size_t &size);
|
||||
shared_buffer(unique_buffer<buffer> &&);
|
||||
explicit shared_buffer(const const_buffer &);
|
||||
shared_buffer() = default;
|
||||
shared_buffer(shared_buffer &&) = default;
|
||||
|
@ -27,19 +28,6 @@ struct ircd::buffer::shared_buffer
|
|||
shared_buffer &operator=(const shared_buffer &) = default;
|
||||
};
|
||||
|
||||
template<class buffer>
|
||||
ircd::buffer::shared_buffer<buffer>::shared_buffer(const size_t &size)
|
||||
:std::shared_ptr<char>
|
||||
{
|
||||
new __attribute__((aligned(16))) char[size],
|
||||
std::default_delete<char[]>()
|
||||
}
|
||||
,buffer
|
||||
{
|
||||
this->std::shared_ptr<char>::get(), size
|
||||
}
|
||||
{}
|
||||
|
||||
template<class buffer>
|
||||
ircd::buffer::shared_buffer<buffer>::shared_buffer(const const_buffer &src)
|
||||
:shared_buffer
|
||||
|
@ -51,3 +39,33 @@ ircd::buffer::shared_buffer<buffer>::shared_buffer(const const_buffer &src)
|
|||
assert(size(dst) == size(src));
|
||||
copy(dst, src);
|
||||
}
|
||||
|
||||
template<class buffer>
|
||||
ircd::buffer::shared_buffer<buffer>::shared_buffer(unique_buffer<buffer> &&buf)
|
||||
:std::shared_ptr<char>
|
||||
{
|
||||
data(buf),
|
||||
std::default_delete<char[]>()
|
||||
}
|
||||
,buffer
|
||||
{
|
||||
this->std::shared_ptr<char>::get(),
|
||||
size(buf)
|
||||
}
|
||||
{
|
||||
buf.release();
|
||||
}
|
||||
|
||||
template<class buffer>
|
||||
ircd::buffer::shared_buffer<buffer>::shared_buffer(const size_t &size)
|
||||
:std::shared_ptr<char>
|
||||
{
|
||||
new __attribute__((aligned(16))) char[size],
|
||||
std::default_delete<char[]>()
|
||||
}
|
||||
,buffer
|
||||
{
|
||||
this->std::shared_ptr<char>::get(),
|
||||
size
|
||||
}
|
||||
{}
|
||||
|
|
Loading…
Reference in a new issue