lokinet/include/llarp/iwp/sendbuf.hpp

79 lines
1010 B
C++
Raw Normal View History

#pragma once
2018-07-20 04:50:28 +00:00
#include <llarp/buffer.h>
#include <llarp/time.h>
#include <memory>
#include <queue>
struct sendbuf_t
{
sendbuf_t(size_t s) : sz(s)
{
_buf = new byte_t[s];
}
~sendbuf_t()
{
if(_buf)
delete[] _buf;
}
size_t sz;
2018-07-20 04:50:28 +00:00
byte_t priority = 255;
size_t
size() const
{
return sz;
}
byte_t *
data()
{
return _buf;
}
2018-07-20 04:50:28 +00:00
llarp_buffer_t
Buffer()
{
llarp_buffer_t buf;
buf.base = _buf;
buf.sz = sz;
buf.cur = buf.base;
return buf;
}
struct GetTime
{
llarp_time_t
operator()(const sendbuf_t *buf) const
{
return buf->timestamp;
}
};
struct PutTime
{
void
operator()(sendbuf_t *buf) const
2018-07-20 04:50:28 +00:00
{
buf->timestamp = llarp_time_now_ms();
}
};
struct Compare
{
bool
operator()(const sendbuf_t *left, const sendbuf_t *right) const
2018-07-20 04:50:28 +00:00
{
return left->timestamp < right->timestamp;
2018-07-20 04:50:28 +00:00
}
};
llarp_time_t timestamp = 0;
private:
byte_t *_buf = nullptr;
};