mirror of https://github.com/PurpleI2P/i2pd
Datagram added
parent
3da35c592f
commit
78d8d34e3b
@ -0,0 +1,29 @@
|
|||||||
|
#include <cryptopp/gzip.h>
|
||||||
|
#include "Log.h"
|
||||||
|
#include "Datagram.h"
|
||||||
|
|
||||||
|
namespace i2p
|
||||||
|
{
|
||||||
|
namespace datagram
|
||||||
|
{
|
||||||
|
void DatagramDestination::HandleDataMessagePayload (const uint8_t * buf, size_t len)
|
||||||
|
{
|
||||||
|
// unzip it
|
||||||
|
CryptoPP::Gunzip decompressor;
|
||||||
|
decompressor.Put (buf, len);
|
||||||
|
decompressor.MessageEnd();
|
||||||
|
uint8_t uncompressed[MAX_DATAGRAM_SIZE];
|
||||||
|
auto uncompressedLen = decompressor.MaxRetrievable ();
|
||||||
|
if (uncompressedLen <= MAX_DATAGRAM_SIZE)
|
||||||
|
{
|
||||||
|
decompressor.Get (uncompressed, uncompressedLen);
|
||||||
|
//HandleNextPacket (uncompressed);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
LogPrint ("Received datagram size ", uncompressedLen, " exceeds max size");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,32 @@
|
|||||||
|
#ifndef DATAGRAM_H__
|
||||||
|
#define DATAGRAM_H__
|
||||||
|
|
||||||
|
#include <inttypes.h>
|
||||||
|
|
||||||
|
namespace i2p
|
||||||
|
{
|
||||||
|
namespace client
|
||||||
|
{
|
||||||
|
class ClientDestination;
|
||||||
|
}
|
||||||
|
namespace datagram
|
||||||
|
{
|
||||||
|
const size_t MAX_DATAGRAM_SIZE = 32768;
|
||||||
|
class DatagramDestination
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
DatagramDestination (i2p::client::ClientDestination& owner): m_Owner (owner) {};
|
||||||
|
~DatagramDestination () {};
|
||||||
|
|
||||||
|
void HandleDataMessagePayload (const uint8_t * buf, size_t len);
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
i2p::client::ClientDestination& m_Owner;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue