package com.netifera.platform.net.wifi.internal.sniffing; import com.netifera.platform.net.packets.IPacketHeader; import com.netifera.platform.net.pcap.ICaptureInterface; import com.netifera.platform.net.sniffing.IPacketContext; import com.netifera.platform.net.sniffing.IPacketFilter; import com.netifera.platform.net.sniffing.IPacketSniffer; import com.netifera.platform.net.sniffing.ISnifferHandle; import com.netifera.platform.net.sniffing.util.AbstractPacketManager; import com.netifera.platform.net.sniffing.util.ISniffingEngineEx; import com.netifera.platform.net.wifi.packets.WiFiFrame; public class WifiFrameManager extends AbstractPacketManager<WiFiFrame>{ private ISnifferHandle rawHandle; private final IPacketFilter filter = null; WifiFrameManager(ISniffingEngineEx sniffingEngine, ICaptureInterface captureInterface) { super(sniffingEngine, captureInterface); } private void handleRaw(IPacketHeader packet, IPacketContext ctx) { WiFiFrame wifi = (WiFiFrame) packet.findHeader(WiFiFrame.class); if(wifi != null) { deliverPacket(wifi, ctx); } } @Override protected boolean start() { rawHandle = getSniffingEngine().createRawHandle(getInterface(), filter, new IPacketSniffer<IPacketHeader>() { public void handlePacket(IPacketHeader packet, IPacketContext ctx) { handleRaw(packet, ctx); } }); rawHandle.setHighPriority(); rawHandle.register(); return true; } @Override protected void stop() { rawHandle.unregister(); rawHandle = null; } }