1
0
forked from metin2/server
server/game/src/protocol.h
2022-03-05 12:44:06 +02:00

62 lines
1.1 KiB
C

#ifndef __PROTOCOL_H__
#define __PROTOCOL_H__
inline const char *encode_byte(char ind)
{
static char a[8];
*((char *) a) = ind;
return (a);
}
inline const char *encode_2bytes(sh_int ind)
{
static char a[8];
*((sh_int *) a) = ind;
return (a);
}
inline const char *encode_4bytes(int ind)
{
static char a[8];
*((int *) a) = ind;
return (a);
}
inline BYTE decode_byte(const void * a)
{
return (*(BYTE *) a);
}
inline WORD decode_2bytes(const void * a)
{
return (*((WORD *) a));
}
inline INT decode_4bytes(const void *a)
{
return (*((INT *) a));
}
#define packet_encode(buf, data, len) __packet_encode(buf, data, len, __FILE__, __LINE__)
//#define DEFAULT_PACKET_BUFFER_SIZE 32768
#define DEFAULT_PACKET_BUFFER_SIZE 65536
inline bool __packet_encode(LPBUFFER pbuf, const void * data, int length, const char * file, int line)
{
assert(NULL != pbuf);
assert(NULL != data);
if (buffer_has_space(pbuf) < length)
{
//sys_err("buffer length exceeded buffer size: %d, encoding %d bytes (%s:%d)", buffer_size(pbuf), length, file, line);
return false;
}
//buffer_adjust_size(pbuf, length);
buffer_write(pbuf, data, length);
return true;
}
#endif