skyscraper8/skyscraper8/Docsis/NullDocsisEventHandler.cs
Fey f094503f20
All checks were successful
🚀 Pack skyscraper8 / make-zip (push) Successful in 4m26s
Bunch 'o DOCSIS Tests.
2025-12-17 08:10:46 +01:00

86 lines
2.3 KiB
C#

using System.Net;
using System.Net.NetworkInformation;
using skyscraper5.Docsis.AnnexC;
using skyscraper5.Docsis.MacManagement;
namespace skyscraper5.Docsis;
public class NullDocsisEventHandler : IDocsisEventHandler
{
private HashSet<PhysicalAddress> participants;
private uint? timing;
private Dictionary<PhysicalAddress, IPAddress> knownIps;
public void OnParticipantDetected(PhysicalAddress pa)
{
if (participants == null)
participants = new HashSet<PhysicalAddress>();
participants.Add(pa);
}
public void OnCmtsTimestamp(PhysicalAddress source, uint timing)
{
OnParticipantDetected(source);
this.timing = timing;
}
public void OnUpstreamChannel(UpstreamChannelDescriptor mmm)
{
if (_queue == null)
_queue = new Queue<object>();
_queue.Enqueue(mmm);
}
public void OnDownstreamChannel(PhysicalAddress physicalAddress, MacDomainDescriptor.DownstreamActiveChannel downstreamActiveChannel)
{
if (_queue == null)
_queue = new Queue<object>();
_queue.Enqueue(downstreamActiveChannel);
}
public void OnLearnedIpFromMac(PhysicalAddress arpHeaderSenderHardwareAddress, IPAddress arpHeaderSenderProtocolAddress)
{
if (knownIps == null)
knownIps = new Dictionary<PhysicalAddress, IPAddress>();
knownIps.Add(arpHeaderSenderHardwareAddress, arpHeaderSenderProtocolAddress);
}
public void OnKeyManagementResponse(PrivacyKeyManagementResponse privacyKeyManagementResponse)
{
if (_queue == null)
_queue = new Queue<object>();
_queue.Enqueue(privacyKeyManagementResponse);
}
public void OnDynamicServiceAddition(ushort transactionId, byte confirmationCode,
CommonTlvEncodingObject tlvEncodedInformation)
{
if (_queue == null)
_queue = new Queue<object>();
_queue.Enqueue(tlvEncodedInformation);
}
private Queue<object> _queue;
public Queue<object> GetQueue()
{
return _queue;
}
public HashSet<PhysicalAddress> GetParticipants()
{
return participants;
}
public uint GetTiming()
{
return timing.Value;
}
}