107 lines
2.9 KiB
C++
107 lines
2.9 KiB
C++
#ifndef OH_BS_DATA_PACKET_H
|
|
#define OH_BS_DATA_PACKET_H
|
|
|
|
#include "CCByteArray.h"
|
|
#include "CCSocket.h"
|
|
#include "CCWebSocket.h"
|
|
#include "CCDatagramSocket.h"
|
|
#include "ByteTool.h"
|
|
|
|
class DataPacket {
|
|
public:
|
|
CTL::Byte Mark1 = 0x00;
|
|
CTL::Byte Mark2 = 0x00;
|
|
CTL::Byte FunNumber = 0x00;
|
|
CTL::Byte Parameter1 = 0x00;
|
|
CTL::Byte Parameter2 = 0x00;
|
|
CTL::Byte Parameter3 = 0x00;
|
|
CTL::Byte Parameter4 = 0x00;
|
|
CTL::Byte Parameter5 = 0x00;
|
|
CTL::ByteArray AdditionalData{};
|
|
CTL::String AimIP = "";
|
|
CTL::ByteArray Buffer {};
|
|
int AimPort = 0;
|
|
bool IsTCP = false;
|
|
CTL::WebSocketInfo* AimWS = nullptr;
|
|
public:
|
|
DataPacket(const char* buffer, const ByteHander size, const CCHostInfo* info = nullptr){
|
|
Buffer.assign(buffer, size);
|
|
if(size >= 8){
|
|
Mark1 = buffer[0];
|
|
Mark2 = buffer[1];
|
|
FunNumber = buffer[2];
|
|
Parameter1 = buffer[3];
|
|
Parameter2 = buffer[4];
|
|
Parameter3 = buffer[5];
|
|
Parameter4 = buffer[6];
|
|
Parameter5 = buffer[7];
|
|
if (size > 8) {
|
|
AdditionalData.assign(&buffer[8], (ByteHander)(size - 8));
|
|
}
|
|
}
|
|
if(info){
|
|
AimIP = info->IPAddress;
|
|
AimPort = info->Port;
|
|
}
|
|
}
|
|
explicit DataPacket(CTL::ByteArray buffer,CTL::WebSocketInfo* info,const bool TCP = false){
|
|
const auto size = buffer.size();
|
|
if(size >= 8){
|
|
Mark1 = buffer[0];
|
|
Mark2 = buffer[1];
|
|
FunNumber = buffer[2];
|
|
Parameter1 = buffer[3];
|
|
Parameter2 = buffer[4];
|
|
Parameter3 = buffer[5];
|
|
Parameter4 = buffer[6];
|
|
Parameter5 = buffer[7];
|
|
if (size > 8) {
|
|
AdditionalData.assign(&buffer[8], (size - 8));
|
|
}
|
|
}
|
|
IsTCP = TCP;
|
|
AimWS = info;
|
|
}
|
|
~DataPacket(){
|
|
AdditionalData.clear();
|
|
}
|
|
private:
|
|
|
|
};
|
|
|
|
|
|
class MaintenancePacket {
|
|
public:
|
|
CTL::Byte FunNumber = 0x00;
|
|
CTL::Byte VersionNumber = 0x00;
|
|
CTL::Byte Length1 = 0x00;
|
|
CTL::Byte Length2 = 0x00;
|
|
CTL::Byte Length3 = 0x00;
|
|
CTL::Byte Length4 = 0x00;
|
|
CTL::ByteArray Data{};
|
|
CTL::String AimIP = "";
|
|
int AimPort = 0;
|
|
MaintenancePacket(const CTL::DatagramPacket& packet) {
|
|
const auto length = packet.getLength();
|
|
const auto buffer = packet.getData();
|
|
if (length >= 6) {
|
|
FunNumber = buffer[0];
|
|
VersionNumber = buffer[1];
|
|
Length1 = buffer[2];
|
|
Length2 = buffer[3];
|
|
Length3 = buffer[4];
|
|
Length4 = buffer[5];
|
|
const auto Size = APPTool::GetSize(Length4,Length3,Length2,Length1);
|
|
if (Size > 0) {
|
|
Data.assign(&buffer[6],Size);
|
|
}
|
|
}
|
|
AimIP = packet.getAddress().getHostAddress();
|
|
AimPort = packet.getPort();
|
|
}
|
|
~MaintenancePacket() {
|
|
Data.clear();
|
|
}
|
|
};
|
|
#endif
|