mirror of
https://github.com/glest/glest-source.git
synced 2025-08-11 19:04:00 +02:00
- more updates to support big endian
This commit is contained in:
@@ -109,10 +109,11 @@ NetworkMessageIntro::NetworkMessageIntro(int32 sessionId,const string &versionSt
|
|||||||
|
|
||||||
bool NetworkMessageIntro::receive(Socket* socket) {
|
bool NetworkMessageIntro::receive(Socket* socket) {
|
||||||
bool result = NetworkMessage::receive(socket, &data, sizeof(data), true);
|
bool result = NetworkMessage::receive(socket, &data, sizeof(data), true);
|
||||||
|
fromEndian();
|
||||||
data.name.nullTerminate();
|
data.name.nullTerminate();
|
||||||
data.versionString.nullTerminate();
|
data.versionString.nullTerminate();
|
||||||
data.language.nullTerminate();
|
data.language.nullTerminate();
|
||||||
fromEndian();
|
|
||||||
if(SystemFlags::getSystemSettingType(SystemFlags::debugNetwork).enabled) SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s Line: %d] get nmtIntro, data.playerIndex = %d, data.sessionId = %d\n",__FILE__,__FUNCTION__,__LINE__,data.playerIndex,data.sessionId);
|
if(SystemFlags::getSystemSettingType(SystemFlags::debugNetwork).enabled) SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s Line: %d] get nmtIntro, data.playerIndex = %d, data.sessionId = %d\n",__FILE__,__FUNCTION__,__LINE__,data.playerIndex,data.sessionId);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@@ -17,14 +17,18 @@
|
|||||||
namespace Shared{ namespace PlatformByteOrder {
|
namespace Shared{ namespace PlatformByteOrder {
|
||||||
|
|
||||||
template<class T> T EndianReverse(T t) {
|
template<class T> T EndianReverse(T t) {
|
||||||
unsigned char uc[sizeof t];
|
// unsigned char uc[sizeof t];
|
||||||
memcpy(uc, &t, sizeof t);
|
// memcpy(uc, &t, sizeof t);
|
||||||
|
//
|
||||||
|
// for (unsigned char *b = uc, *e = uc + sizeof(T) - 1; b < e; ++b, --e) {
|
||||||
|
// std::swap(*b, *e);
|
||||||
|
// }
|
||||||
|
// memcpy(&t, uc, sizeof t);
|
||||||
|
// return t;
|
||||||
|
|
||||||
for (unsigned char *b = uc, *e = uc + sizeof(T) - 1; b < e; ++b, --e) {
|
char& raw = reinterpret_cast<char&>(t);
|
||||||
std::swap(*b, *e);
|
std::reverse(&raw, &raw + sizeof(T));
|
||||||
}
|
return t;
|
||||||
memcpy(&t, uc, sizeof t);
|
|
||||||
return t;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool isBigEndian() {
|
static bool isBigEndian() {
|
||||||
|
Reference in New Issue
Block a user