37 lines
656 B
C++
37 lines
656 B
C++
#pragma once
|
|
|
|
#ifndef __NO_DEF_STD_TYPES
|
|
typedef unsigned char byte;
|
|
typedef unsigned short word;
|
|
typedef unsigned long dword;
|
|
#endif
|
|
|
|
#pragma pack(push,1)
|
|
|
|
struct TCommand
|
|
{
|
|
byte size;
|
|
byte command;
|
|
};
|
|
|
|
#define DECLARE_CMD_DATA(cmd) cmd##_T cmd##_D
|
|
#define DECLARE_CMD(cmd, var) cmd##_T var; \
|
|
var.size = sizeof(var); \
|
|
var.command = cmd;
|
|
|
|
/*
|
|
* В классе CSocket должен быть реализован метод
|
|
* write(const char *buffer, size_t size)
|
|
*/
|
|
|
|
|
|
template <class CSocket>
|
|
void sendCommand(CSocket &socket, const TCommand &command)
|
|
{
|
|
socket.write(reinterpret_cast<const char*>(&command), command.size);
|
|
}
|
|
|
|
#pragma pack(pop)
|
|
|
|
|