mirror of
https://github.com/Detanup01/gbe_fork.git
synced 2024-11-23 19:25:35 +08:00
add a new serialization method to DLC struct
This commit is contained in:
parent
af86d6efc2
commit
e8f64faf17
36
dll/auth.h
36
dll/auth.h
@ -16,6 +16,42 @@
|
|||||||
struct DLC {
|
struct DLC {
|
||||||
uint32_t AppId;
|
uint32_t AppId;
|
||||||
std::vector<uint32_t> Licenses;
|
std::vector<uint32_t> Licenses;
|
||||||
|
|
||||||
|
std::vector<uint8_t> Serialize()
|
||||||
|
{
|
||||||
|
PRINT_DEBUG("AUTH::DLC::SER AppId = %u, Licenses count = %zu\n", AppId, Licenses.size());
|
||||||
|
|
||||||
|
// we need this variable because we depend on the sizeof, must be 2 bytes
|
||||||
|
const uint16_t dlcs_licenses_count = (uint16_t)Licenses.size();
|
||||||
|
const size_t dlcs_licenses_total_size =
|
||||||
|
Licenses.size() * sizeof(Licenses[0]); // count * element size
|
||||||
|
|
||||||
|
const size_t total_size =
|
||||||
|
sizeof(AppId) +
|
||||||
|
sizeof(dlcs_licenses_count) +
|
||||||
|
dlcs_licenses_total_size;
|
||||||
|
|
||||||
|
std::vector<uint8_t> buffer;
|
||||||
|
buffer.resize(total_size);
|
||||||
|
|
||||||
|
uint8_t* pBuffer = buffer.data();
|
||||||
|
|
||||||
|
#define SER_VAR(v) \
|
||||||
|
*reinterpret_cast<std::remove_const<decltype(v)>::type *>(pBuffer) = v; \
|
||||||
|
pBuffer += sizeof(v)
|
||||||
|
|
||||||
|
SER_VAR(AppId);
|
||||||
|
SER_VAR(dlcs_licenses_count);
|
||||||
|
for(uint32_t dlc_license : Licenses)
|
||||||
|
{
|
||||||
|
SER_VAR(dlc_license);
|
||||||
|
}
|
||||||
|
|
||||||
|
#undef SER_VAR
|
||||||
|
|
||||||
|
PRINT_DEBUG("AUTH::DLC::SER final size = %zu\n", buffer.size());
|
||||||
|
return buffer;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
struct AppTicketGC {
|
struct AppTicketGC {
|
||||||
|
Loading…
Reference in New Issue
Block a user