Distribution_Service/Server/PortService/R_Order_AA.h
2025-12-03 18:08:23 +08:00

88 lines
3.1 KiB
C++

#ifndef DISTRIBUTION_SERVICE_R_ORDER_AA_H
#define DISTRIBUTION_SERVICE_R_ORDER_AA_H
#include "DataPacket.h"
#include "ByteTool.h"
#include "../Configuration/BS_Log.h"
#include "Terminal/Terminal.h"
#include "TaskModel/Transmitter.h"
class R_Order_AA {
public:
static void Function(const DataPacket& packet){
const auto N = packet.FunNumber.get();
const auto hex = APPTool::GetHX(N);
const auto str = CC::format("RoutingAA::Function(%s)", hex.c_str());
BS_Log::Log(str);
}
static void Function_0x01(const DataPacket& packet) {
const auto ID = APPTool::GetInt(packet.Parameter2, packet.Parameter3);
const auto Term = Terminal::getData(ID);
int Vol = 0;
if (Term) {
Term->Heartbeat++;
if (Term->Status == 0) {
Term->Status = 1;
BS_Log::Log("Function_0x01 TermID: {} is ONLINE", ID);
}
Term->IP = packet.AimIP;
Term->Port = packet.AimPort;
Vol = Term->Vol;
}
else {
const auto term = new Terminal();
term->ID = ID;
term->IP = packet.AimIP;
term->Port = packet.AimPort;
term->Status = 1;
Vol = term->Vol;
term->Heartbeat++;
BS_Log::Log("Function_0x01 TermID: {} is New", ID);
Terminal::addData(term);
}
const auto Setting = Config::getConfig();
const auto Aim = new AIMInfo;
CTL::AutoDestruct aim(Aim);
Aim->IP = packet.AimIP;
Aim->Port = packet.AimPort;
Aim->Data = {0x66,0xAA,0x01,0x01,0x00,Vol,Setting->ServerID,Setting->ONLINEVol};
Transmitter::Send_Massage(Aim);
}
static void Function_0x0B(const DataPacket& packet){
const auto ID = APPTool::GetInt(packet.Parameter2, packet.Parameter3);
const auto Term = Terminal::getData(ID);
if (Term) {
Term->Ver = packet.Parameter4;
Term->StreamPort = packet.AimPort;
const int D = APPTool::GetInt(packet.AdditionalData[12],packet.AdditionalData[13]);
Term->TermDriveNumber = D;
}
}
static void Function_0x80(const DataPacket& packet){
const auto info = new AIMInfo();
CTL::AutoDestruct autoDestruct(info);
info->IP = packet.AimIP;
info->Port = packet.AimPort;
info->Data = packet.Buffer;
bool F = Transmitter::Send_Massage(info);
}
static void Function_0xAA(const DataPacket& packet){
const auto Setting = Config::getConfig();
const uint8_t length = Setting->IP.length();
const auto AimInfo = new AIMInfo();
CTL::AutoDestruct autoDestruct(AimInfo);
AimInfo->IP = packet.AimIP;
AimInfo->Port = packet.AimPort;
AimInfo->Data= {0x66,0xAA,0xAA,0x00,packet.Parameter2,packet.Parameter3,0x00,length};
AimInfo->Data.append(Setting->IP);
Transmitter::Send_Massage(AimInfo);
}
static void Function_0xC1(const DataPacket& packet){
}
static void Function_0xA4(const DataPacket& packet){
}
};
#endif