private static void CollectPacket(UdpSocketPacket packet, SenderPacketCollection senderPacketCollection) { int senderSessionId = PacketHelper.getSessionIdFromSenderPacketBytes(packet.Bytes); SenderPacketType packetType = PacketHelper.getPacketTypeFromSenderPacketBytes(packet.Bytes); if (packetType == SenderPacketType.Confirm) { senderPacketCollection.ConfirmPacketInfoList.Add(new ConfirmPacketInfo(packet.EndPoint, senderSessionId, ConfirmSenderPacketData.Parse(packet.Bytes))); return; } SenderPacketSet senderPacketSet; if (!senderPacketCollection.SenderPacketSets.TryGetValue(senderSessionId, out senderPacketSet)) { return; } // Heartbeat packets turns on ReceivedAny. senderPacketSet.ReceivedAny = true; switch (packetType) { case SenderPacketType.VideoInit: senderPacketSet.InitPacketDataList.Add(VideoInitSenderPacketData.Parse(packet.Bytes)); break; case SenderPacketType.Frame: senderPacketSet.VideoPacketDataList.Add(VideoSenderPacketData.Parse(packet.Bytes)); break; case SenderPacketType.Parity: senderPacketSet.FecPacketDataList.Add(ParitySenderPacketData.Parse(packet.Bytes)); break; case SenderPacketType.Audio: senderPacketSet.AudioPacketDataList.Add(AudioSenderPacketData.Parse(packet.Bytes)); break; case SenderPacketType.Floor: senderPacketSet.FloorPacketDataList.Add(FloorSenderPacketData.Parse(packet.Bytes)); break; } }
public static SenderPacketSet Receive(UdpSocket udpSocket) { var senderPacketSet = new SenderPacketSet(); while (true) { var packet = udpSocket.Receive(); if (packet == null) { break; } //int sessionId = PacketHelper.getSessionIdFromSenderPacketBytes(packet); senderPacketSet.ReceivedAny = true; switch (PacketHelper.getPacketTypeFromSenderPacketBytes(packet)) { case SenderPacketType.Init: senderPacketSet.InitPacketDataList.Add(InitSenderPacketData.Parse(packet)); break; case SenderPacketType.Frame: senderPacketSet.VideoPacketDataList.Add(VideoSenderPacketData.Parse(packet)); break; case SenderPacketType.Parity: senderPacketSet.FecPacketDataList.Add(ParitySenderPacketData.Parse(packet)); break; case SenderPacketType.Audio: senderPacketSet.AudioPacketDataList.Add(AudioSenderPacketData.Parse(packet)); break; case SenderPacketType.Floor: senderPacketSet.FloorPacketDataList.Add(FloorSenderPacketData.Parse(packet)); break; } } return(senderPacketSet); }