cpp.ProtocolManagerTemplate.h Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of protocol Show documentation
Show all versions of protocol Show documentation
zfoo protocol is binary serialization framework for Java/C++/js/ts/C#/Go/Lua/GDScript/Python
The newest version!
#ifndef ZFOO_PROTOCOLMANAGER_H
#define ZFOO_PROTOCOLMANAGER_H
#include "ByteBuffer.h"
${protocol_imports}
namespace zfoo {
const int16_t MAX_PROTOCOL_NUM = 32767;
const IProtocolRegistration *protocols[MAX_PROTOCOL_NUM];
void initProtocol() {
${protocol_manager_registrations}
}
inline IProtocolRegistration *getProtocol(int16_t protocolId) {
return const_cast(protocols[protocolId]);
}
void write(ByteBuffer &buffer, IProtocol *packet) {
auto protocolId = packet->protocolId();
// 写入协议号
buffer.writeShort(protocolId);
// 写入包体
getProtocol(protocolId)->write(buffer, packet);
}
IProtocol *read(ByteBuffer &buffer) {
auto protocolId = buffer.readShort();
return getProtocol(protocolId)->read(buffer);
}
}
#endif