mirror of
https://github.com/XTXMarkets/ternfs.git
synced 2026-02-20 18:59:06 -06:00
Add "mtu" field to requests that benefit from it
Not used right now, but this way we can easily start stuffing more data in responses. I also split off some arguments in `NewClient`, unrelated change (I wanted to pair the MTU with a single client, but I then realized that it's enough to have it as some global property for now).
This commit is contained in:
@@ -373,7 +373,8 @@ struct BincodeBuf {
|
||||
}
|
||||
};
|
||||
|
||||
constexpr size_t UDP_MTU = 1472;
|
||||
constexpr size_t DEFAULT_UDP_MTU = 1472; // 1500 - IP header - ICMP header
|
||||
constexpr size_t MAX_UDP_MTU = 8972; // 9000 - IP header - ICMP header
|
||||
|
||||
constexpr uint8_t BLOCK_SERVICE_STALE = 1u;
|
||||
constexpr uint8_t BLOCK_SERVICE_NO_READ = 1u<<1;
|
||||
|
||||
@@ -1180,22 +1180,26 @@ std::ostream& operator<<(std::ostream& out, const StatDirectoryResp& x) {
|
||||
void ReadDirReq::pack(BincodeBuf& buf) const {
|
||||
dirId.pack(buf);
|
||||
buf.packScalar<uint64_t>(startHash);
|
||||
buf.packScalar<uint16_t>(mtu);
|
||||
}
|
||||
void ReadDirReq::unpack(BincodeBuf& buf) {
|
||||
dirId.unpack(buf);
|
||||
startHash = buf.unpackScalar<uint64_t>();
|
||||
mtu = buf.unpackScalar<uint16_t>();
|
||||
}
|
||||
void ReadDirReq::clear() {
|
||||
dirId = InodeId();
|
||||
startHash = uint64_t(0);
|
||||
mtu = uint16_t(0);
|
||||
}
|
||||
bool ReadDirReq::operator==(const ReadDirReq& rhs) const {
|
||||
if ((InodeId)this->dirId != (InodeId)rhs.dirId) { return false; };
|
||||
if ((uint64_t)this->startHash != (uint64_t)rhs.startHash) { return false; };
|
||||
if ((uint16_t)this->mtu != (uint16_t)rhs.mtu) { return false; };
|
||||
return true;
|
||||
}
|
||||
std::ostream& operator<<(std::ostream& out, const ReadDirReq& x) {
|
||||
out << "ReadDirReq(" << "DirId=" << x.dirId << ", " << "StartHash=" << x.startHash << ")";
|
||||
out << "ReadDirReq(" << "DirId=" << x.dirId << ", " << "StartHash=" << x.startHash << ", " << "Mtu=" << x.mtu << ")";
|
||||
return out;
|
||||
}
|
||||
|
||||
@@ -1481,25 +1485,29 @@ void FileSpansReq::pack(BincodeBuf& buf) const {
|
||||
fileId.pack(buf);
|
||||
buf.packScalar<uint64_t>(byteOffset);
|
||||
buf.packScalar<uint32_t>(limit);
|
||||
buf.packScalar<uint16_t>(mtu);
|
||||
}
|
||||
void FileSpansReq::unpack(BincodeBuf& buf) {
|
||||
fileId.unpack(buf);
|
||||
byteOffset = buf.unpackScalar<uint64_t>();
|
||||
limit = buf.unpackScalar<uint32_t>();
|
||||
mtu = buf.unpackScalar<uint16_t>();
|
||||
}
|
||||
void FileSpansReq::clear() {
|
||||
fileId = InodeId();
|
||||
byteOffset = uint64_t(0);
|
||||
limit = uint32_t(0);
|
||||
mtu = uint16_t(0);
|
||||
}
|
||||
bool FileSpansReq::operator==(const FileSpansReq& rhs) const {
|
||||
if ((InodeId)this->fileId != (InodeId)rhs.fileId) { return false; };
|
||||
if ((uint64_t)this->byteOffset != (uint64_t)rhs.byteOffset) { return false; };
|
||||
if ((uint32_t)this->limit != (uint32_t)rhs.limit) { return false; };
|
||||
if ((uint16_t)this->mtu != (uint16_t)rhs.mtu) { return false; };
|
||||
return true;
|
||||
}
|
||||
std::ostream& operator<<(std::ostream& out, const FileSpansReq& x) {
|
||||
out << "FileSpansReq(" << "FileId=" << x.fileId << ", " << "ByteOffset=" << x.byteOffset << ", " << "Limit=" << x.limit << ")";
|
||||
out << "FileSpansReq(" << "FileId=" << x.fileId << ", " << "ByteOffset=" << x.byteOffset << ", " << "Limit=" << x.limit << ", " << "Mtu=" << x.mtu << ")";
|
||||
return out;
|
||||
}
|
||||
|
||||
@@ -1799,19 +1807,23 @@ std::ostream& operator<<(std::ostream& out, const ExpireTransientFileResp& x) {
|
||||
|
||||
void VisitDirectoriesReq::pack(BincodeBuf& buf) const {
|
||||
beginId.pack(buf);
|
||||
buf.packScalar<uint16_t>(mtu);
|
||||
}
|
||||
void VisitDirectoriesReq::unpack(BincodeBuf& buf) {
|
||||
beginId.unpack(buf);
|
||||
mtu = buf.unpackScalar<uint16_t>();
|
||||
}
|
||||
void VisitDirectoriesReq::clear() {
|
||||
beginId = InodeId();
|
||||
mtu = uint16_t(0);
|
||||
}
|
||||
bool VisitDirectoriesReq::operator==(const VisitDirectoriesReq& rhs) const {
|
||||
if ((InodeId)this->beginId != (InodeId)rhs.beginId) { return false; };
|
||||
if ((uint16_t)this->mtu != (uint16_t)rhs.mtu) { return false; };
|
||||
return true;
|
||||
}
|
||||
std::ostream& operator<<(std::ostream& out, const VisitDirectoriesReq& x) {
|
||||
out << "VisitDirectoriesReq(" << "BeginId=" << x.beginId << ")";
|
||||
out << "VisitDirectoriesReq(" << "BeginId=" << x.beginId << ", " << "Mtu=" << x.mtu << ")";
|
||||
return out;
|
||||
}
|
||||
|
||||
@@ -1839,19 +1851,23 @@ std::ostream& operator<<(std::ostream& out, const VisitDirectoriesResp& x) {
|
||||
|
||||
void VisitFilesReq::pack(BincodeBuf& buf) const {
|
||||
beginId.pack(buf);
|
||||
buf.packScalar<uint16_t>(mtu);
|
||||
}
|
||||
void VisitFilesReq::unpack(BincodeBuf& buf) {
|
||||
beginId.unpack(buf);
|
||||
mtu = buf.unpackScalar<uint16_t>();
|
||||
}
|
||||
void VisitFilesReq::clear() {
|
||||
beginId = InodeId();
|
||||
mtu = uint16_t(0);
|
||||
}
|
||||
bool VisitFilesReq::operator==(const VisitFilesReq& rhs) const {
|
||||
if ((InodeId)this->beginId != (InodeId)rhs.beginId) { return false; };
|
||||
if ((uint16_t)this->mtu != (uint16_t)rhs.mtu) { return false; };
|
||||
return true;
|
||||
}
|
||||
std::ostream& operator<<(std::ostream& out, const VisitFilesReq& x) {
|
||||
out << "VisitFilesReq(" << "BeginId=" << x.beginId << ")";
|
||||
out << "VisitFilesReq(" << "BeginId=" << x.beginId << ", " << "Mtu=" << x.mtu << ")";
|
||||
return out;
|
||||
}
|
||||
|
||||
@@ -1879,19 +1895,23 @@ std::ostream& operator<<(std::ostream& out, const VisitFilesResp& x) {
|
||||
|
||||
void VisitTransientFilesReq::pack(BincodeBuf& buf) const {
|
||||
beginId.pack(buf);
|
||||
buf.packScalar<uint16_t>(mtu);
|
||||
}
|
||||
void VisitTransientFilesReq::unpack(BincodeBuf& buf) {
|
||||
beginId.unpack(buf);
|
||||
mtu = buf.unpackScalar<uint16_t>();
|
||||
}
|
||||
void VisitTransientFilesReq::clear() {
|
||||
beginId = InodeId();
|
||||
mtu = uint16_t(0);
|
||||
}
|
||||
bool VisitTransientFilesReq::operator==(const VisitTransientFilesReq& rhs) const {
|
||||
if ((InodeId)this->beginId != (InodeId)rhs.beginId) { return false; };
|
||||
if ((uint16_t)this->mtu != (uint16_t)rhs.mtu) { return false; };
|
||||
return true;
|
||||
}
|
||||
std::ostream& operator<<(std::ostream& out, const VisitTransientFilesReq& x) {
|
||||
out << "VisitTransientFilesReq(" << "BeginId=" << x.beginId << ")";
|
||||
out << "VisitTransientFilesReq(" << "BeginId=" << x.beginId << ", " << "Mtu=" << x.mtu << ")";
|
||||
return out;
|
||||
}
|
||||
|
||||
@@ -1920,22 +1940,26 @@ std::ostream& operator<<(std::ostream& out, const VisitTransientFilesResp& x) {
|
||||
void FullReadDirReq::pack(BincodeBuf& buf) const {
|
||||
dirId.pack(buf);
|
||||
cursor.pack(buf);
|
||||
buf.packScalar<uint16_t>(mtu);
|
||||
}
|
||||
void FullReadDirReq::unpack(BincodeBuf& buf) {
|
||||
dirId.unpack(buf);
|
||||
cursor.unpack(buf);
|
||||
mtu = buf.unpackScalar<uint16_t>();
|
||||
}
|
||||
void FullReadDirReq::clear() {
|
||||
dirId = InodeId();
|
||||
cursor.clear();
|
||||
mtu = uint16_t(0);
|
||||
}
|
||||
bool FullReadDirReq::operator==(const FullReadDirReq& rhs) const {
|
||||
if ((InodeId)this->dirId != (InodeId)rhs.dirId) { return false; };
|
||||
if (cursor != rhs.cursor) { return false; };
|
||||
if ((uint16_t)this->mtu != (uint16_t)rhs.mtu) { return false; };
|
||||
return true;
|
||||
}
|
||||
std::ostream& operator<<(std::ostream& out, const FullReadDirReq& x) {
|
||||
out << "FullReadDirReq(" << "DirId=" << x.dirId << ", " << "Cursor=" << x.cursor << ")";
|
||||
out << "FullReadDirReq(" << "DirId=" << x.dirId << ", " << "Cursor=" << x.cursor << ", " << "Mtu=" << x.mtu << ")";
|
||||
return out;
|
||||
}
|
||||
|
||||
|
||||
@@ -953,14 +953,16 @@ std::ostream& operator<<(std::ostream& out, const StatDirectoryResp& x);
|
||||
struct ReadDirReq {
|
||||
InodeId dirId;
|
||||
uint64_t startHash;
|
||||
uint16_t mtu;
|
||||
|
||||
static constexpr uint16_t STATIC_SIZE = 8 + 8; // dirId + startHash
|
||||
static constexpr uint16_t STATIC_SIZE = 8 + 8 + 2; // dirId + startHash + mtu
|
||||
|
||||
ReadDirReq() { clear(); }
|
||||
uint16_t packedSize() const {
|
||||
uint16_t _size = 0;
|
||||
_size += 8; // dirId
|
||||
_size += 8; // startHash
|
||||
_size += 2; // mtu
|
||||
return _size;
|
||||
}
|
||||
void pack(BincodeBuf& buf) const;
|
||||
@@ -1224,8 +1226,9 @@ struct FileSpansReq {
|
||||
InodeId fileId;
|
||||
uint64_t byteOffset;
|
||||
uint32_t limit;
|
||||
uint16_t mtu;
|
||||
|
||||
static constexpr uint16_t STATIC_SIZE = 8 + 8 + 4; // fileId + byteOffset + limit
|
||||
static constexpr uint16_t STATIC_SIZE = 8 + 8 + 4 + 2; // fileId + byteOffset + limit + mtu
|
||||
|
||||
FileSpansReq() { clear(); }
|
||||
uint16_t packedSize() const {
|
||||
@@ -1233,6 +1236,7 @@ struct FileSpansReq {
|
||||
_size += 8; // fileId
|
||||
_size += 8; // byteOffset
|
||||
_size += 4; // limit
|
||||
_size += 2; // mtu
|
||||
return _size;
|
||||
}
|
||||
void pack(BincodeBuf& buf) const;
|
||||
@@ -1522,13 +1526,15 @@ std::ostream& operator<<(std::ostream& out, const ExpireTransientFileResp& x);
|
||||
|
||||
struct VisitDirectoriesReq {
|
||||
InodeId beginId;
|
||||
uint16_t mtu;
|
||||
|
||||
static constexpr uint16_t STATIC_SIZE = 8; // beginId
|
||||
static constexpr uint16_t STATIC_SIZE = 8 + 2; // beginId + mtu
|
||||
|
||||
VisitDirectoriesReq() { clear(); }
|
||||
uint16_t packedSize() const {
|
||||
uint16_t _size = 0;
|
||||
_size += 8; // beginId
|
||||
_size += 2; // mtu
|
||||
return _size;
|
||||
}
|
||||
void pack(BincodeBuf& buf) const;
|
||||
@@ -1562,13 +1568,15 @@ std::ostream& operator<<(std::ostream& out, const VisitDirectoriesResp& x);
|
||||
|
||||
struct VisitFilesReq {
|
||||
InodeId beginId;
|
||||
uint16_t mtu;
|
||||
|
||||
static constexpr uint16_t STATIC_SIZE = 8; // beginId
|
||||
static constexpr uint16_t STATIC_SIZE = 8 + 2; // beginId + mtu
|
||||
|
||||
VisitFilesReq() { clear(); }
|
||||
uint16_t packedSize() const {
|
||||
uint16_t _size = 0;
|
||||
_size += 8; // beginId
|
||||
_size += 2; // mtu
|
||||
return _size;
|
||||
}
|
||||
void pack(BincodeBuf& buf) const;
|
||||
@@ -1602,13 +1610,15 @@ std::ostream& operator<<(std::ostream& out, const VisitFilesResp& x);
|
||||
|
||||
struct VisitTransientFilesReq {
|
||||
InodeId beginId;
|
||||
uint16_t mtu;
|
||||
|
||||
static constexpr uint16_t STATIC_SIZE = 8; // beginId
|
||||
static constexpr uint16_t STATIC_SIZE = 8 + 2; // beginId + mtu
|
||||
|
||||
VisitTransientFilesReq() { clear(); }
|
||||
uint16_t packedSize() const {
|
||||
uint16_t _size = 0;
|
||||
_size += 8; // beginId
|
||||
_size += 2; // mtu
|
||||
return _size;
|
||||
}
|
||||
void pack(BincodeBuf& buf) const;
|
||||
@@ -1643,14 +1653,16 @@ std::ostream& operator<<(std::ostream& out, const VisitTransientFilesResp& x);
|
||||
struct FullReadDirReq {
|
||||
InodeId dirId;
|
||||
FullReadDirCursor cursor;
|
||||
uint16_t mtu;
|
||||
|
||||
static constexpr uint16_t STATIC_SIZE = 8 + FullReadDirCursor::STATIC_SIZE; // dirId + cursor
|
||||
static constexpr uint16_t STATIC_SIZE = 8 + FullReadDirCursor::STATIC_SIZE + 2; // dirId + cursor + mtu
|
||||
|
||||
FullReadDirReq() { clear(); }
|
||||
uint16_t packedSize() const {
|
||||
uint16_t _size = 0;
|
||||
_size += 8; // dirId
|
||||
_size += cursor.packedSize(); // cursor
|
||||
_size += 2; // mtu
|
||||
return _size;
|
||||
}
|
||||
void pack(BincodeBuf& buf) const;
|
||||
|
||||
Reference in New Issue
Block a user