mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2024-11-22 05:27:19 +00:00
Convert AMFSerialize to use bitstream references (#1466)
This commit is contained in:
parent
4b0079c817
commit
27d20dd8fa
@ -53,7 +53,7 @@ void RakNet::BitStream::Write<AMFBaseValue&>(AMFBaseValue& value) {
|
|||||||
* A private function to write an value to a RakNet::BitStream
|
* A private function to write an value to a RakNet::BitStream
|
||||||
* RakNet writes in the correct byte order - do not reverse this.
|
* RakNet writes in the correct byte order - do not reverse this.
|
||||||
*/
|
*/
|
||||||
void WriteUInt29(RakNet::BitStream* bs, uint32_t v) {
|
void WriteUInt29(RakNet::BitStream& bs, uint32_t v) {
|
||||||
unsigned char b4 = static_cast<unsigned char>(v);
|
unsigned char b4 = static_cast<unsigned char>(v);
|
||||||
if (v < 0x00200000) {
|
if (v < 0x00200000) {
|
||||||
b4 = b4 & 0x7F;
|
b4 = b4 & 0x7F;
|
||||||
@ -65,10 +65,10 @@ void WriteUInt29(RakNet::BitStream* bs, uint32_t v) {
|
|||||||
unsigned char b2;
|
unsigned char b2;
|
||||||
v = v >> 7;
|
v = v >> 7;
|
||||||
b2 = static_cast<unsigned char>(v) | 0x80;
|
b2 = static_cast<unsigned char>(v) | 0x80;
|
||||||
bs->Write(b2);
|
bs.Write(b2);
|
||||||
}
|
}
|
||||||
|
|
||||||
bs->Write(b3);
|
bs.Write(b3);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
unsigned char b1;
|
unsigned char b1;
|
||||||
@ -82,19 +82,19 @@ void WriteUInt29(RakNet::BitStream* bs, uint32_t v) {
|
|||||||
v = v >> 7;
|
v = v >> 7;
|
||||||
b1 = static_cast<unsigned char>(v) | 0x80;
|
b1 = static_cast<unsigned char>(v) | 0x80;
|
||||||
|
|
||||||
bs->Write(b1);
|
bs.Write(b1);
|
||||||
bs->Write(b2);
|
bs.Write(b2);
|
||||||
bs->Write(b3);
|
bs.Write(b3);
|
||||||
}
|
}
|
||||||
|
|
||||||
bs->Write(b4);
|
bs.Write(b4);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Writes a flag number to a RakNet::BitStream
|
* Writes a flag number to a RakNet::BitStream
|
||||||
* RakNet writes in the correct byte order - do not reverse this.
|
* RakNet writes in the correct byte order - do not reverse this.
|
||||||
*/
|
*/
|
||||||
void WriteFlagNumber(RakNet::BitStream* bs, uint32_t v) {
|
void WriteFlagNumber(RakNet::BitStream& bs, uint32_t v) {
|
||||||
v = (v << 1) | 0x01;
|
v = (v << 1) | 0x01;
|
||||||
WriteUInt29(bs, v);
|
WriteUInt29(bs, v);
|
||||||
}
|
}
|
||||||
@ -104,9 +104,9 @@ void WriteFlagNumber(RakNet::BitStream* bs, uint32_t v) {
|
|||||||
*
|
*
|
||||||
* RakNet writes in the correct byte order - do not reverse this.
|
* RakNet writes in the correct byte order - do not reverse this.
|
||||||
*/
|
*/
|
||||||
void WriteAMFString(RakNet::BitStream* bs, const std::string& str) {
|
void WriteAMFString(RakNet::BitStream& bs, const std::string& str) {
|
||||||
WriteFlagNumber(bs, static_cast<uint32_t>(str.size()));
|
WriteFlagNumber(bs, static_cast<uint32_t>(str.size()));
|
||||||
bs->Write(str.c_str(), static_cast<uint32_t>(str.size()));
|
bs.Write(str.c_str(), static_cast<uint32_t>(str.size()));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -114,8 +114,8 @@ void WriteAMFString(RakNet::BitStream* bs, const std::string& str) {
|
|||||||
*
|
*
|
||||||
* RakNet writes in the correct byte order - do not reverse this.
|
* RakNet writes in the correct byte order - do not reverse this.
|
||||||
*/
|
*/
|
||||||
void WriteAMFU16(RakNet::BitStream* bs, uint16_t value) {
|
void WriteAMFU16(RakNet::BitStream& bs, uint16_t value) {
|
||||||
bs->Write(value);
|
bs.Write(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -123,8 +123,8 @@ void WriteAMFU16(RakNet::BitStream* bs, uint16_t value) {
|
|||||||
*
|
*
|
||||||
* RakNet writes in the correct byte order - do not reverse this.
|
* RakNet writes in the correct byte order - do not reverse this.
|
||||||
*/
|
*/
|
||||||
void WriteAMFU32(RakNet::BitStream* bs, uint32_t value) {
|
void WriteAMFU32(RakNet::BitStream& bs, uint32_t value) {
|
||||||
bs->Write(value);
|
bs.Write(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -132,40 +132,40 @@ void WriteAMFU32(RakNet::BitStream* bs, uint32_t value) {
|
|||||||
*
|
*
|
||||||
* RakNet writes in the correct byte order - do not reverse this.
|
* RakNet writes in the correct byte order - do not reverse this.
|
||||||
*/
|
*/
|
||||||
void WriteAMFU64(RakNet::BitStream* bs, uint64_t value) {
|
void WriteAMFU64(RakNet::BitStream& bs, uint64_t value) {
|
||||||
bs->Write(value);
|
bs.Write(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Writes an AMFIntegerValue to BitStream
|
// Writes an AMFIntegerValue to BitStream
|
||||||
template<>
|
template<>
|
||||||
void RakNet::BitStream::Write<AMFIntValue&>(AMFIntValue& value) {
|
void RakNet::BitStream::Write<AMFIntValue&>(AMFIntValue& value) {
|
||||||
WriteUInt29(this, value.GetValue());
|
WriteUInt29(*this, value.GetValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Writes an AMFDoubleValue to BitStream
|
// Writes an AMFDoubleValue to BitStream
|
||||||
template<>
|
template<>
|
||||||
void RakNet::BitStream::Write<AMFDoubleValue&>(AMFDoubleValue& value) {
|
void RakNet::BitStream::Write<AMFDoubleValue&>(AMFDoubleValue& value) {
|
||||||
double d = value.GetValue();
|
double d = value.GetValue();
|
||||||
WriteAMFU64(this, *reinterpret_cast<uint64_t*>(&d));
|
WriteAMFU64(*this, *reinterpret_cast<uint64_t*>(&d));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Writes an AMFStringValue to BitStream
|
// Writes an AMFStringValue to BitStream
|
||||||
template<>
|
template<>
|
||||||
void RakNet::BitStream::Write<AMFStringValue&>(AMFStringValue& value) {
|
void RakNet::BitStream::Write<AMFStringValue&>(AMFStringValue& value) {
|
||||||
WriteAMFString(this, value.GetValue());
|
WriteAMFString(*this, value.GetValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Writes an AMFArrayValue to BitStream
|
// Writes an AMFArrayValue to BitStream
|
||||||
template<>
|
template<>
|
||||||
void RakNet::BitStream::Write<AMFArrayValue&>(AMFArrayValue& value) {
|
void RakNet::BitStream::Write<AMFArrayValue&>(AMFArrayValue& value) {
|
||||||
uint32_t denseSize = value.GetDense().size();
|
uint32_t denseSize = value.GetDense().size();
|
||||||
WriteFlagNumber(this, denseSize);
|
WriteFlagNumber(*this, denseSize);
|
||||||
|
|
||||||
auto it = value.GetAssociative().begin();
|
auto it = value.GetAssociative().begin();
|
||||||
auto end = value.GetAssociative().end();
|
auto end = value.GetAssociative().end();
|
||||||
|
|
||||||
while (it != end) {
|
while (it != end) {
|
||||||
WriteAMFString(this, it->first);
|
WriteAMFString(*this, it->first);
|
||||||
this->Write<AMFBaseValue&>(*it->second);
|
this->Write<AMFBaseValue&>(*it->second);
|
||||||
it++;
|
it++;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user