1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-04-28 07:07:45 +00:00
sapphire/src/common/Network/Oodle.cpp
Moydow 7449d16c7e Oodle support for 6.15
Requires the oodle2base.h and oodle2net.h header files, and oo2net_9_win64.dll, to be placed in /deps/Oodle/ - they are not included here
2023-01-26 04:21:11 -03:00

28 lines
No EOL
1 KiB
C++

#include "Oodle.h"
using namespace Sapphire;
Network::Oodle::Oodle() :
m_htbits(19)
{
auto stateSize = OodleNetwork1UDP_State_Size();
auto sharedSize = OodleNetwork1_Shared_Size( m_htbits );
m_state = std::vector< uint8_t >( stateSize, 0 );
m_shared = std::vector< uint8_t >( sharedSize, 0 );
m_window = std::vector< uint8_t >( 0x8000, 0 );
oodleInit();
}
void Network::Oodle::oodleInit()
{
OodleNetwork1_Shared_SetWindow( (OodleNetwork1_Shared*) &m_shared[0], m_htbits, &m_window[0], (int) m_window.size() );
OodleNetwork1UDP_Train( (OodleNetwork1UDP_State*) &m_state[0], (OodleNetwork1_Shared*) &m_shared[0], nullptr, nullptr, 0 );
}
bool Network::Oodle::oodleDecode( const std::vector< uint8_t > &enc, uint32_t encSize, std::vector< uint8_t > &dec, uint32_t decSize )
{
OodleNetwork1_Shared_SetWindow( (OodleNetwork1_Shared*) &m_shared[0], m_htbits, &m_window[0], (int) m_window.size() );
return OodleNetwork1UDP_Decode( (OodleNetwork1UDP_State*) &m_state[0], (OodleNetwork1_Shared*) &m_shared[0], &enc[0], encSize, &dec[0], decSize );
}