implement "Fsinn" plane info request

This commit is contained in:
Reese Norris
2024-04-09 11:26:15 -07:00
parent f831ffc8fe
commit 2861947057
4 changed files with 190 additions and 0 deletions

View File

@@ -193,6 +193,38 @@ func PlaneInfoRequestProcessor(client *FSDClient, rawPacket string) *ProcessorRe
return result
}
func PlaneInfoRequestFsinnProcessor(client *FSDClient, rawPacket string) *ProcessorResult {
// Parse & validate packet
pdu, err := protocol.ParsePlaneInfoRequestFsinnPDU(rawPacket)
if err != nil {
var fsdError *protocol.FSDError
result := NewProcessorResult()
if errors.As(err, &fsdError) {
result.AddReply(fsdError.Serialize())
}
result.Disconnect(true)
return result
}
// Check for valid source callsign
if pdu.From != client.Callsign {
result := NewProcessorResult()
result.AddReply(protocol.NewGenericFSDError(protocol.PDUSourceInvalidError).Serialize())
result.Disconnect(true)
return result
}
mail := NewMail(client)
mail.SetType(MailTypeDirect)
mail.AddRecipient(pdu.To)
mail.AddPacket(rawPacket)
result := NewProcessorResult()
result.AddMail(*mail)
return result
}
func PlaneInfoResponseProcessor(client *FSDClient, rawPacket string) *ProcessorResult {
// Parse & validate packet
pdu, err := protocol.ParsePlaneInfoResponsePDU(rawPacket)