Skip to content

Packet Processing

zeroKilo edited this page May 11, 2020 · 5 revisions

Packet Processing

In the lowest layer, packets are received via UDP. From there they are first processed by their streamtype

Stream Handlers

from Quazal::TransportStreamManager::DemuxIncomingPacket one of 2 streamhandlers is called:

Type 5 (NAT)

This is just used for the NAT detection `

-> Quazal::HighLevelStream::ReceiveIncomingPacket
-> Quazal::NATTraversalStream::ReceiveIncomingMsg
-> Quazal::NATTraversalEngine::ReceiveMessage
...`

Type 1 (DO), Type 3 (RMC)

these packets are put into a job with a handler and dispatched for execution later `

-> ???
-> Quazal::PRUDPStream::ReceiveIncomingPacket
-> Quazal::PRUDPEndPoint::ServiceIncomingPacket
-> Quazal::PRUDPEndPoint::Dispatch
-> Quazal::PRUDPEndPoint::HandlerDispatch
-> Quazal::ClientStreamManager::Receive (job gets scheduled here)`

Job Processing

after a DATA packet has been processed, a job is dispatched to handle its content `

YETI
-> ???
-> sub_84FD60
-> sub_84D990
-> sub_86C0D0
-> sub_6AB200
-> sub_6B56A0
OSDK
-> Quazal::Scheduler::DispatchAll
-> Quazal::Scheduler::Dispatch
-> Quazal::Scheduler::DispatchUnlocked
-> Quazal::Scheduler::DispatchImpl
-> Quazal::Scheduler::ProcessJob`

from here one of 2 DATA handlers is called

DATA Handler

RMC

`

-> Quazal::JobProcessProtocolMessage::Execute
-> Quazal::ClientProtocolRequestBroker::ProcessMessage
-> Quazal::ClientProtocolRequestBroker::ProcessMessageCore
-> Quazal::ClientProtocolRequestBroker::ProcessCallResponse
-> Quazal::ClientProtocol::ProcessResponse
->` [Packet Processor](https://github.com/zeroKilo/GRPBackendWV/wiki/Packet-Processor-Locations)

DO

`

-> Quazal::ObjDupProtocol::Dispatch
-> Quazal::ObjDupProtocol::DispatchExtractMessageType
-> Quazal::ObjDupProtocol::DispatchTrace
-> Quazal::ObjDupProtocol::ParseSpecificMessage`
Clone this wiki locally