forked from metin2/server
62 lines
1.1 KiB
C
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
|