test_class.declarator: logger =
  			LoggerFactory.getLogger(DeviceManagerImplTest.class)
test_class.modifier: protected static
test_class.original_string: protected static Logger logger =
  			LoggerFactory.getLogger(DeviceManagerImplTest.class);
test_class.type: Logger
test_class.var_name: logger
test_class.declarator: testARPReplyPacketIn_1
test_class.modifier: protected
test_class.original_string: protected OFPacketIn testARPReplyPacketIn_1, testARPReplyPacketIn_2;
test_class.type: OFPacketIn
test_class.var_name: testARPReplyPacketIn_1
test_class.declarator: testUDPPacketIn
test_class.modifier: protected
test_class.original_string: protected OFPacketIn testUDPPacketIn;
test_class.type: OFPacketIn
test_class.var_name: testUDPPacketIn
test_class.declarator: testUDPIPv6PacketIn
test_class.modifier: protected
test_class.original_string: protected OFPacketIn testUDPIPv6PacketIn;
test_class.type: OFPacketIn
test_class.var_name: testUDPIPv6PacketIn
test_class.declarator: testUDPIPv6RevPacketIn
test_class.modifier: protected
test_class.original_string: protected OFPacketIn testUDPIPv6RevPacketIn;
test_class.type: OFPacketIn
test_class.var_name: testUDPIPv6RevPacketIn
test_class.declarator: testARPReplyPacket_1
test_class.modifier: protected
test_class.original_string: protected IPacket testARPReplyPacket_1, testARPReplyPacket_2;
test_class.type: IPacket
test_class.var_name: testARPReplyPacket_1
test_class.declarator: testUDPPacket
test_class.modifier: protected
test_class.original_string: protected Ethernet testUDPPacket;
test_class.type: Ethernet
test_class.var_name: testUDPPacket
test_class.declarator: testUDPIPv6Packet
test_class.modifier: protected
test_class.original_string: protected Ethernet testUDPIPv6Packet;
test_class.type: Ethernet
test_class.var_name: testUDPIPv6Packet
test_class.declarator: testUDPIPv6RevPacket
test_class.modifier: protected
test_class.original_string: protected Ethernet testUDPIPv6RevPacket;
test_class.type: Ethernet
test_class.var_name: testUDPIPv6RevPacket
test_class.declarator: testARPReplyPacket_1_Srld
test_class.modifier: protected
test_class.original_string: protected byte[] testARPReplyPacket_1_Srld, testARPReplyPacket_2_Srld;
test_class.type: byte[]
test_class.var_name: testARPReplyPacket_1_Srld
test_class.declarator: testUDPPacketSrld
test_class.modifier: protected
test_class.original_string: protected byte[] testUDPPacketSrld;
test_class.type: byte[]
test_class.var_name: testUDPPacketSrld
test_class.declarator: syncService
test_class.modifier: private
test_class.original_string: private MockSyncService syncService;
test_class.type: MockSyncService
test_class.var_name: syncService
test_class.declarator: storeClient
test_class.modifier: private
test_class.original_string: private IStoreClient<String, DeviceSyncRepresentation> storeClient;
test_class.type: IStoreClient<String, DeviceSyncRepresentation>
test_class.var_name: storeClient
test_class.declarator: deviceManager
test_class.original_string: DeviceManagerImpl deviceManager;
test_class.type: DeviceManagerImpl
test_class.var_name: deviceManager
test_class.declarator: storageSource
test_class.original_string: MemoryStorageSource storageSource;
test_class.type: MemoryStorageSource
test_class.var_name: storageSource
test_class.declarator: debugCounterService
test_class.original_string: IDebugCounterService debugCounterService;
test_class.type: IDebugCounterService
test_class.var_name: debugCounterService
test_class.declarator: debugEventService
test_class.original_string: IDebugEventService debugEventService;
test_class.type: IDebugEventService
test_class.var_name: debugEventService
test_class.file: src/agents/apps/floodlight/floodlight-1.2/src/test/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImplTest.java
test_class.identifier: DeviceManagerImplTest
test_class.superclass: extends FloodlightTestCase
test_case.body: @Test
  	public void testAttachmentPointFlappingTwoCluster() throws Exception {
  		Calendar c = Calendar.getInstance();
  
  		ITopologyService mockTopology = createMock(ITopologyService.class);
  		expect(mockTopology.isAttachmentPointPort(DatapathId.of(anyLong()),
  				OFPort.of(anyShort()))).andReturn(true).anyTimes();
  		expect(mockTopology.isBroadcastDomainPort(DatapathId.of(anyLong()),
  				OFPort.of(anyShort()))).
  				andReturn(false).anyTimes();
  		expect(mockTopology.isInSameBroadcastDomain(DatapathId.of(anyLong()), OFPort.of(anyShort()),
  				DatapathId.of(anyLong()), OFPort.of(anyShort()))).andReturn(false).anyTimes();
  		expect(mockTopology.getOpenflowDomainId(DatapathId.of(1L))).
  		andReturn(DatapathId.of(1L)).anyTimes();
  		expect(mockTopology.getOpenflowDomainId(DatapathId.of(5L))).
  		andReturn(DatapathId.of(5L)).anyTimes();
  		expect(mockTopology.isConsistent(DatapathId.of(1L), OFPort.of(1), DatapathId.of(1L), OFPort.of(2))).
  		andReturn(false).anyTimes();
  		expect(mockTopology.isConsistent(DatapathId.of(1L), OFPort.of(2), DatapathId.of(5L), OFPort.of(1))).
  		andReturn(false).anyTimes();
  		expect(mockTopology.isConsistent(DatapathId.of(5L), OFPort.of(1), DatapathId.of(5L), OFPort.of(2))).
  		andReturn(false).anyTimes();
  		expect(mockTopology.isConsistent(DatapathId.of(1L), OFPort.of(2), DatapathId.of(1L), OFPort.of(1))).
  		andReturn(false).anyTimes();
  		expect(mockTopology.isConsistent(DatapathId.of(1L), OFPort.of(1), DatapathId.of(5L), OFPort.of(1))).
  		andReturn(false).anyTimes();
  		expect(mockTopology.isConsistent(DatapathId.of(1L), OFPort.of(1), DatapathId.of(5L), OFPort.of(2))).
  		andReturn(false).anyTimes();
  		expect(mockTopology.isConsistent(DatapathId.of(5L), OFPort.of(2), DatapathId.of(5L), OFPort.of(1))).
  		andReturn(false).anyTimes();
  
  		Date topologyUpdateTime = new Date();
  		expect(mockTopology.getLastUpdateTime()).andReturn(topologyUpdateTime).
  		anyTimes();
  
  		replay(mockTopology);
  		deviceManager.topology = mockTopology;
  
  		Entity entity1 = new Entity(MacAddress.of(1L), VlanVid.ZERO, IPv4Address.NONE, IPv6Address.NONE, DatapathId.of(1L), OFPort.of(1), c.getTime());
  		Entity entity2 = new Entity(MacAddress.of(1L), VlanVid.ZERO, IPv4Address.NONE, IPv6Address.NONE, DatapathId.of(1L), OFPort.of(2), c.getTime());
  		Entity entity3 = new Entity(MacAddress.of(1L), VlanVid.ZERO, IPv4Address.NONE, IPv6Address.NONE, DatapathId.of(5L), OFPort.of(1), c.getTime());
  		Entity entity4 = new Entity(MacAddress.of(1L), VlanVid.ZERO, IPv4Address.NONE, IPv6Address.NONE, DatapathId.of(5L), OFPort.of(2), c.getTime());
  		entity1.setLastSeenTimestamp(c.getTime());
  		c.add(Calendar.MILLISECOND, Entity.ACTIVITY_TIMEOUT/2);
  		c.add(Calendar.MILLISECOND, 1);
  		entity2.setLastSeenTimestamp(c.getTime());
  		c.add(Calendar.MILLISECOND, 1);
  		entity3.setLastSeenTimestamp(c.getTime());
  		c.add(Calendar.MILLISECOND, 1);
  		entity4.setLastSeenTimestamp(c.getTime());
  
  		deviceManager.learnDeviceByEntity(entity1);
  		deviceManager.learnDeviceByEntity(entity2);
  		deviceManager.learnDeviceByEntity(entity3);
  		IDevice d = deviceManager.learnDeviceByEntity(entity4);
  
  		// all entities are active, so entities 2,4 should win
  		assertArrayEquals(new SwitchPort[] { new SwitchPort(DatapathId.of(1L), OFPort.of(2)),
  				new SwitchPort(DatapathId.of(5L), OFPort.of(2)) },
  				d.getAttachmentPoints());
  		assertArrayEquals(new SwitchPort[] { new SwitchPort(DatapathId.of(1L), OFPort.of(2)),
  				new SwitchPort(DatapathId.of(5L), OFPort.of(2))},
  				d.getAttachmentPoints(true));
  
  		c.add(Calendar.MILLISECOND, 1);
  		entity1.setLastSeenTimestamp(c.getTime());
  		d = deviceManager.learnDeviceByEntity(entity1);
  
  		// all entities are active, so entities 2,4 should win
  		assertArrayEquals(new SwitchPort[] { new SwitchPort(DatapathId.of(1L), OFPort.of(2)),
  				new SwitchPort(DatapathId.of(5L), OFPort.of(2)) },
  				d.getAttachmentPoints());
  		assertArrayEquals(new SwitchPort[] { new SwitchPort(DatapathId.of(1L), OFPort.of(2)),
  				new SwitchPort(DatapathId.of(5L), OFPort.of(2)),
  				new SwitchPort(DatapathId.of(1L), OFPort.of(1), ErrorStatus.DUPLICATE_DEVICE)},
  				d.getAttachmentPoints(true));
  
  		c.add(Calendar.MILLISECOND, Entity.ACTIVITY_TIMEOUT+1);
  		entity1.setLastSeenTimestamp(c.getTime());
  		d = deviceManager.learnDeviceByEntity(entity1);
  
  		// entities 3,4 are still in conflict, but 1 should be resolved
  		assertArrayEquals(new SwitchPort[] { new SwitchPort(DatapathId.of(1L), OFPort.of(1)),
  				new SwitchPort(DatapathId.of(5L), OFPort.of(2)) },
  				d.getAttachmentPoints());
  		assertArrayEquals(new SwitchPort[] { new SwitchPort(DatapathId.of(1L), OFPort.of(1)),
  				new SwitchPort(DatapathId.of(5L), OFPort.of(2))},
  				d.getAttachmentPoints(true));
  
  		entity3.setLastSeenTimestamp(c.getTime());
  		d = deviceManager.learnDeviceByEntity(entity3);
  
  		// no conflicts, 1 and 3 will win
  		assertArrayEquals(new SwitchPort[] { new SwitchPort(DatapathId.of(1L), OFPort.of(1)),
  				new SwitchPort(DatapathId.of(5L), OFPort.of(1)) },
  				d.getAttachmentPoints());
  		assertArrayEquals(new SwitchPort[] { new SwitchPort(DatapathId.of(1L), OFPort.of(1)),
  				new SwitchPort(DatapathId.of(5L), OFPort.of(1)) },
  				d.getAttachmentPoints(true));
  
  	}
test_case.class_method_signature: DeviceManagerImplTest.testAttachmentPointFlappingTwoCluster()
test_case.full_signature: @Test public void testAttachmentPointFlappingTwoCluster()
test_case.identifier: testAttachmentPointFlappingTwoCluster
test_case.invocations: getInstance createMock anyTimes andReturn expect isAttachmentPointPort of anyLong of anyShort anyTimes andReturn expect isBroadcastDomainPort of anyLong of anyShort anyTimes andReturn expect isInSameBroadcastDomain of anyLong of anyShort of anyLong of anyShort anyTimes andReturn expect getOpenflowDomainId of of anyTimes andReturn expect getOpenflowDomainId of of anyTimes andReturn expect isConsistent of of of of anyTimes andReturn expect isConsistent of of of of anyTimes andReturn expect isConsistent of of of of anyTimes andReturn expect isConsistent of of of of anyTimes andReturn expect isConsistent of of of of anyTimes andReturn expect isConsistent of of of of anyTimes andReturn expect isConsistent of of of of anyTimes andReturn expect getLastUpdateTime replay of of of getTime of of of getTime of of of getTime of of of getTime setLastSeenTimestamp getTime add add setLastSeenTimestamp getTime add setLastSeenTimestamp getTime add setLastSeenTimestamp getTime learnDeviceByEntity learnDeviceByEntity learnDeviceByEntity learnDeviceByEntity assertArrayEquals of of of of getAttachmentPoints assertArrayEquals of of of of getAttachmentPoints add setLastSeenTimestamp getTime learnDeviceByEntity assertArrayEquals of of of of getAttachmentPoints assertArrayEquals of of of of of of getAttachmentPoints add setLastSeenTimestamp getTime learnDeviceByEntity assertArrayEquals of of of of getAttachmentPoints assertArrayEquals of of of of getAttachmentPoints setLastSeenTimestamp getTime learnDeviceByEntity assertArrayEquals of of of of getAttachmentPoints assertArrayEquals of of of of getAttachmentPoints
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testAttachmentPointFlappingTwoCluster()
focal_class.declarator: logger = LoggerFactory.getLogger(DeviceManagerImpl.class)
focal_class.modifier: protected static
focal_class.original_string: protected static Logger logger = LoggerFactory.getLogger(DeviceManagerImpl.class);
focal_class.type: Logger
focal_class.var_name: logger
focal_class.declarator: floodlightProvider
focal_class.modifier: protected
focal_class.original_string: protected IFloodlightProviderService floodlightProvider;
focal_class.type: IFloodlightProviderService
focal_class.var_name: floodlightProvider
focal_class.declarator: topology
focal_class.modifier: protected
focal_class.original_string: protected ITopologyService topology;
focal_class.type: ITopologyService
focal_class.var_name: topology
focal_class.declarator: storageSource
focal_class.modifier: protected
focal_class.original_string: protected IStorageSourceService storageSource;
focal_class.type: IStorageSourceService
focal_class.var_name: storageSource
focal_class.declarator: restApi
focal_class.modifier: protected
focal_class.original_string: protected IRestApiService restApi;
focal_class.type: IRestApiService
focal_class.var_name: restApi
focal_class.declarator: threadPool
focal_class.modifier: protected
focal_class.original_string: protected IThreadPoolService threadPool;
focal_class.type: IThreadPoolService
focal_class.var_name: threadPool
focal_class.declarator: debugCounters
focal_class.modifier: protected
focal_class.original_string: protected IDebugCounterService debugCounters;
focal_class.type: IDebugCounterService
focal_class.var_name: debugCounters
focal_class.declarator: syncService
focal_class.modifier: private
focal_class.original_string: private ISyncService syncService;
focal_class.type: ISyncService
focal_class.var_name: syncService
focal_class.declarator: storeClient
focal_class.modifier: private
focal_class.original_string: private IStoreClient<String, DeviceSyncRepresentation> storeClient;
focal_class.type: IStoreClient<String, DeviceSyncRepresentation>
focal_class.var_name: storeClient
focal_class.declarator: deviceSyncManager
focal_class.modifier: private
focal_class.original_string: private DeviceSyncManager deviceSyncManager;
focal_class.type: DeviceSyncManager
focal_class.var_name: deviceSyncManager
focal_class.declarator: MODULE_NAME = "devicemanager"
focal_class.modifier: public static final
focal_class.original_string: public static final String MODULE_NAME = "devicemanager";
focal_class.type: String
focal_class.var_name: MODULE_NAME
focal_class.declarator: PACKAGE = DeviceManagerImpl.class.getPackage().getName()
focal_class.modifier: public static final
focal_class.original_string: public static final String PACKAGE = DeviceManagerImpl.class.getPackage().getName();
focal_class.type: String
focal_class.var_name: PACKAGE
focal_class.declarator: cntIncoming
focal_class.modifier: public
focal_class.original_string: public IDebugCounter cntIncoming;
focal_class.type: IDebugCounter
focal_class.var_name: cntIncoming
focal_class.declarator: cntReconcileRequest
focal_class.modifier: public
focal_class.original_string: public IDebugCounter cntReconcileRequest;
focal_class.type: IDebugCounter
focal_class.var_name: cntReconcileRequest
focal_class.declarator: cntReconcileNoSource
focal_class.modifier: public
focal_class.original_string: public IDebugCounter cntReconcileNoSource;
focal_class.type: IDebugCounter
focal_class.var_name: cntReconcileNoSource
focal_class.declarator: cntReconcileNoDest
focal_class.modifier: public
focal_class.original_string: public IDebugCounter cntReconcileNoDest;
focal_class.type: IDebugCounter
focal_class.var_name: cntReconcileNoDest
focal_class.declarator: cntInvalidSource
focal_class.modifier: public
focal_class.original_string: public IDebugCounter cntInvalidSource;
focal_class.type: IDebugCounter
focal_class.var_name: cntInvalidSource
focal_class.declarator: cntInvalidDest
focal_class.modifier: public
focal_class.original_string: public IDebugCounter cntInvalidDest;
focal_class.type: IDebugCounter
focal_class.var_name: cntInvalidDest
focal_class.declarator: cntNoSource
focal_class.modifier: public
focal_class.original_string: public IDebugCounter cntNoSource;
focal_class.type: IDebugCounter
focal_class.var_name: cntNoSource
focal_class.declarator: cntNoDest
focal_class.modifier: public
focal_class.original_string: public IDebugCounter cntNoDest;
focal_class.type: IDebugCounter
focal_class.var_name: cntNoDest
focal_class.declarator: cntDhcpClientNameSnooped
focal_class.modifier: public
focal_class.original_string: public IDebugCounter cntDhcpClientNameSnooped;
focal_class.type: IDebugCounter
focal_class.var_name: cntDhcpClientNameSnooped
focal_class.declarator: cntDeviceOnInternalPortNotLearned
focal_class.modifier: public
focal_class.original_string: public IDebugCounter cntDeviceOnInternalPortNotLearned;
focal_class.type: IDebugCounter
focal_class.var_name: cntDeviceOnInternalPortNotLearned
focal_class.declarator: cntPacketNotAllowed
focal_class.modifier: public
focal_class.original_string: public IDebugCounter cntPacketNotAllowed;
focal_class.type: IDebugCounter
focal_class.var_name: cntPacketNotAllowed
focal_class.declarator: cntNewDevice
focal_class.modifier: public
focal_class.original_string: public IDebugCounter cntNewDevice;
focal_class.type: IDebugCounter
focal_class.var_name: cntNewDevice
focal_class.declarator: cntPacketOnInternalPortForKnownDevice
focal_class.modifier: public
focal_class.original_string: public IDebugCounter cntPacketOnInternalPortForKnownDevice;
focal_class.type: IDebugCounter
focal_class.var_name: cntPacketOnInternalPortForKnownDevice
focal_class.declarator: cntNewEntity
focal_class.modifier: public
focal_class.original_string: public IDebugCounter cntNewEntity;
focal_class.type: IDebugCounter
focal_class.var_name: cntNewEntity
focal_class.declarator: cntDeviceChanged
focal_class.modifier: public
focal_class.original_string: public IDebugCounter cntDeviceChanged;
focal_class.type: IDebugCounter
focal_class.var_name: cntDeviceChanged
focal_class.declarator: cntDeviceMoved
focal_class.modifier: public
focal_class.original_string: public IDebugCounter cntDeviceMoved;
focal_class.type: IDebugCounter
focal_class.var_name: cntDeviceMoved
focal_class.declarator: cntCleanupEntitiesRuns
focal_class.modifier: public
focal_class.original_string: public IDebugCounter cntCleanupEntitiesRuns;
focal_class.type: IDebugCounter
focal_class.var_name: cntCleanupEntitiesRuns
focal_class.declarator: cntEntityRemovedTimeout
focal_class.modifier: public
focal_class.original_string: public IDebugCounter cntEntityRemovedTimeout;
focal_class.type: IDebugCounter
focal_class.var_name: cntEntityRemovedTimeout
focal_class.declarator: cntDeviceDeleted
focal_class.modifier: public
focal_class.original_string: public IDebugCounter cntDeviceDeleted;
focal_class.type: IDebugCounter
focal_class.var_name: cntDeviceDeleted
focal_class.declarator: cntDeviceReclassifyDelete
focal_class.modifier: public
focal_class.original_string: public IDebugCounter cntDeviceReclassifyDelete;
focal_class.type: IDebugCounter
focal_class.var_name: cntDeviceReclassifyDelete
focal_class.declarator: cntDeviceStrored
focal_class.modifier: public
focal_class.original_string: public IDebugCounter cntDeviceStrored;
focal_class.type: IDebugCounter
focal_class.var_name: cntDeviceStrored
focal_class.declarator: cntDeviceStoreThrottled
focal_class.modifier: public
focal_class.original_string: public IDebugCounter cntDeviceStoreThrottled;
focal_class.type: IDebugCounter
focal_class.var_name: cntDeviceStoreThrottled
focal_class.declarator: cntDeviceRemovedFromStore
focal_class.modifier: public
focal_class.original_string: public IDebugCounter cntDeviceRemovedFromStore;
focal_class.type: IDebugCounter
focal_class.var_name: cntDeviceRemovedFromStore
focal_class.declarator: cntSyncException
focal_class.modifier: public
focal_class.original_string: public IDebugCounter cntSyncException;
focal_class.type: IDebugCounter
focal_class.var_name: cntSyncException
focal_class.declarator: cntDevicesFromStore
focal_class.modifier: public
focal_class.original_string: public IDebugCounter cntDevicesFromStore;
focal_class.type: IDebugCounter
focal_class.var_name: cntDevicesFromStore
focal_class.declarator: cntConsolidateStoreRuns
focal_class.modifier: public
focal_class.original_string: public IDebugCounter cntConsolidateStoreRuns;
focal_class.type: IDebugCounter
focal_class.var_name: cntConsolidateStoreRuns
focal_class.declarator: cntConsolidateStoreDevicesRemoved
focal_class.modifier: public
focal_class.original_string: public IDebugCounter cntConsolidateStoreDevicesRemoved;
focal_class.type: IDebugCounter
focal_class.var_name: cntConsolidateStoreDevicesRemoved
focal_class.declarator: cntTransitionToMaster
focal_class.modifier: public
focal_class.original_string: public IDebugCounter cntTransitionToMaster;
focal_class.type: IDebugCounter
focal_class.var_name: cntTransitionToMaster
focal_class.declarator: debugEventService
focal_class.modifier: private
focal_class.original_string: private IDebugEventService debugEventService;
focal_class.type: IDebugEventService
focal_class.var_name: debugEventService
focal_class.declarator: debugEventCategory
focal_class.modifier: private
focal_class.original_string: private IEventCategory<DeviceEvent> debugEventCategory;
focal_class.type: IEventCategory<DeviceEvent>
focal_class.var_name: debugEventCategory
focal_class.declarator: isMaster = false
focal_class.modifier: private
focal_class.original_string: private boolean isMaster = false;
focal_class.type: boolean
focal_class.var_name: isMaster
focal_class.declarator: DEVICE_SYNC_STORE_NAME =
  			DeviceManagerImpl.class.getCanonicalName() + ".stateStore"
focal_class.modifier: static final
focal_class.original_string: static final String DEVICE_SYNC_STORE_NAME =
  			DeviceManagerImpl.class.getCanonicalName() + ".stateStore";
focal_class.type: String
focal_class.var_name: DEVICE_SYNC_STORE_NAME
focal_class.declarator: DEFAULT_SYNC_STORE_WRITE_INTERVAL_MS = 5*60*1000
focal_class.modifier: static final
focal_class.original_string: static final int DEFAULT_SYNC_STORE_WRITE_INTERVAL_MS = 5*60*1000;
focal_class.type: int
focal_class.var_name: DEFAULT_SYNC_STORE_WRITE_INTERVAL_MS
focal_class.declarator: syncStoreWriteIntervalMs = DEFAULT_SYNC_STORE_WRITE_INTERVAL_MS
focal_class.modifier: private
focal_class.original_string: private int syncStoreWriteIntervalMs = DEFAULT_SYNC_STORE_WRITE_INTERVAL_MS;
focal_class.type: int
focal_class.var_name: syncStoreWriteIntervalMs
focal_class.declarator: DEFAULT_INITIAL_SYNC_STORE_CONSOLIDATE_MS =
  			15*1000
focal_class.modifier: static final
focal_class.original_string: static final int DEFAULT_INITIAL_SYNC_STORE_CONSOLIDATE_MS =
  			15*1000;
focal_class.type: int
focal_class.var_name: DEFAULT_INITIAL_SYNC_STORE_CONSOLIDATE_MS
focal_class.declarator: initialSyncStoreConsolidateMs =
  			DEFAULT_INITIAL_SYNC_STORE_CONSOLIDATE_MS
focal_class.modifier: private
focal_class.original_string: private int initialSyncStoreConsolidateMs =
  			DEFAULT_INITIAL_SYNC_STORE_CONSOLIDATE_MS;
focal_class.type: int
focal_class.var_name: initialSyncStoreConsolidateMs
focal_class.declarator: DEFAULT_SYNC_STORE_CONSOLIDATE_INTERVAL_MS =
  			75*60*1000
focal_class.modifier: static final
focal_class.original_string: static final int DEFAULT_SYNC_STORE_CONSOLIDATE_INTERVAL_MS =
  			75*60*1000;
focal_class.type: int
focal_class.var_name: DEFAULT_SYNC_STORE_CONSOLIDATE_INTERVAL_MS
focal_class.declarator: syncStoreConsolidateIntervalMs =
  			DEFAULT_SYNC_STORE_CONSOLIDATE_INTERVAL_MS
focal_class.modifier: private final
focal_class.original_string: private final int syncStoreConsolidateIntervalMs =
  			DEFAULT_SYNC_STORE_CONSOLIDATE_INTERVAL_MS;
focal_class.type: int
focal_class.var_name: syncStoreConsolidateIntervalMs
focal_class.declarator: ENTITY_TIMEOUT = 60*60*1000
focal_class.modifier: protected static final
focal_class.original_string: protected static final int ENTITY_TIMEOUT = 60*60*1000;
focal_class.type: int
focal_class.var_name: ENTITY_TIMEOUT
focal_class.declarator: ENTITY_CLEANUP_INTERVAL = 60*60
focal_class.modifier: protected static final
focal_class.original_string: protected static final int ENTITY_CLEANUP_INTERVAL = 60*60;
focal_class.type: int
focal_class.var_name: ENTITY_CLEANUP_INTERVAL
focal_class.declarator: deviceMap
focal_class.modifier: protected
focal_class.original_string: protected ConcurrentHashMap<Long, Device> deviceMap;
focal_class.type: ConcurrentHashMap<Long, Device>
focal_class.var_name: deviceMap
focal_class.declarator: deviceKeyCounter = new AtomicLong(0)
focal_class.modifier: protected
focal_class.original_string: protected AtomicLong deviceKeyCounter = new AtomicLong(0);
focal_class.type: AtomicLong
focal_class.var_name: deviceKeyCounter
focal_class.declarator: primaryIndex
focal_class.modifier: protected
focal_class.original_string: protected DeviceUniqueIndex primaryIndex;
focal_class.type: DeviceUniqueIndex
focal_class.var_name: primaryIndex
focal_class.declarator: secondaryIndexMap
focal_class.modifier: protected
focal_class.original_string: protected Map<EnumSet<DeviceField>, DeviceIndex> secondaryIndexMap;
focal_class.type: Map<EnumSet<DeviceField>, DeviceIndex>
focal_class.var_name: secondaryIndexMap
focal_class.declarator: classStateMap
focal_class.modifier: protected
focal_class.original_string: protected ConcurrentHashMap<String, ClassState> classStateMap;
focal_class.type: ConcurrentHashMap<String, ClassState>
focal_class.var_name: classStateMap
focal_class.declarator: perClassIndices
focal_class.modifier: protected
focal_class.original_string: protected Set<EnumSet<DeviceField>> perClassIndices;
focal_class.type: Set<EnumSet<DeviceField>>
focal_class.var_name: perClassIndices
focal_class.declarator: entityClassifier
focal_class.modifier: protected
focal_class.original_string: protected IEntityClassifierService entityClassifier;
focal_class.type: IEntityClassifierService
focal_class.var_name: entityClassifier
focal_class.declarator: deviceListeners
focal_class.modifier: protected
focal_class.original_string: protected ListenerDispatcher<String,IDeviceListener> deviceListeners;
focal_class.type: ListenerDispatcher<String,IDeviceListener>
focal_class.var_name: deviceListeners
focal_class.declarator: apComparator
focal_class.modifier: public
focal_class.original_string: public AttachmentPointComparator apComparator;
focal_class.type: AttachmentPointComparator
focal_class.var_name: apComparator
focal_class.declarator: suppressAPs
focal_class.modifier: private
focal_class.original_string: private Set<SwitchPort> suppressAPs;
focal_class.type: Set<SwitchPort>
focal_class.var_name: suppressAPs
focal_class.declarator: entityCleanupTask
focal_class.modifier: public
focal_class.original_string: public SingletonTask entityCleanupTask;
focal_class.type: SingletonTask
focal_class.var_name: entityCleanupTask
focal_class.declarator: storeConsolidateTask
focal_class.modifier: private
focal_class.original_string: private SingletonTask storeConsolidateTask;
focal_class.type: SingletonTask
focal_class.var_name: storeConsolidateTask
focal_class.declarator: haListenerDelegate
focal_class.modifier: protected
focal_class.original_string: protected HAListenerDelegate haListenerDelegate;
focal_class.type: HAListenerDelegate
focal_class.var_name: haListenerDelegate
focal_class.file: src/agents/apps/floodlight/floodlight-1.2/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImpl.java
focal_class.identifier: DeviceManagerImpl
focal_class.interfaces: implements IDeviceService, IOFMessageListener, ITopologyListener, IFloodlightModule, IEntityClassListener, IInfoProvider
focal_class.class_method_signature: DeviceManagerImpl.getDevice(Long deviceKey)
focal_class.full_signature: @Override public IDevice getDevice(Long deviceKey)
focal_class.identifier: getDevice
focal_class.modifiers: @Override public
focal_class.parameters: (Long deviceKey)
focal_class.return: IDevice
focal_class.signature: IDevice getDevice(Long deviceKey)
focal_class.class_method_signature: DeviceManagerImpl.findDevice(@Nonnull MacAddress macAddress, VlanVid vlan,
  			@Nonnull IPv4Address ipv4Address, @Nonnull IPv6Address ipv6Address,
  			@Nonnull DatapathId switchDPID, @Nonnull OFPort switchPort)
focal_class.full_signature: @Override public IDevice findDevice(@Nonnull MacAddress macAddress, VlanVid vlan,
  			@Nonnull IPv4Address ipv4Address, @Nonnull IPv6Address ipv6Address,
  			@Nonnull DatapathId switchDPID, @Nonnull OFPort switchPort)
focal_class.identifier: findDevice
focal_class.modifiers: @Override public
focal_class.parameters: (@Nonnull MacAddress macAddress, VlanVid vlan,
  			@Nonnull IPv4Address ipv4Address, @Nonnull IPv6Address ipv6Address,
  			@Nonnull DatapathId switchDPID, @Nonnull OFPort switchPort)
focal_class.return: IDevice
focal_class.signature: IDevice findDevice(@Nonnull MacAddress macAddress, VlanVid vlan,
  			@Nonnull IPv4Address ipv4Address, @Nonnull IPv6Address ipv6Address,
  			@Nonnull DatapathId switchDPID, @Nonnull OFPort switchPort)
focal_class.class_method_signature: DeviceManagerImpl.findClassDevice(@Nonnull IEntityClass entityClass, @Nonnull MacAddress macAddress,
  			@Nonnull VlanVid vlan, @Nonnull IPv4Address ipv4Address, @Nonnull IPv6Address ipv6Address)
focal_class.full_signature: @Override public IDevice findClassDevice(@Nonnull IEntityClass entityClass, @Nonnull MacAddress macAddress,
  			@Nonnull VlanVid vlan, @Nonnull IPv4Address ipv4Address, @Nonnull IPv6Address ipv6Address)
focal_class.identifier: findClassDevice
focal_class.modifiers: @Override public
focal_class.parameters: (@Nonnull IEntityClass entityClass, @Nonnull MacAddress macAddress,
  			@Nonnull VlanVid vlan, @Nonnull IPv4Address ipv4Address, @Nonnull IPv6Address ipv6Address)
focal_class.return: IDevice
focal_class.signature: IDevice findClassDevice(@Nonnull IEntityClass entityClass, @Nonnull MacAddress macAddress,
  			@Nonnull VlanVid vlan, @Nonnull IPv4Address ipv4Address, @Nonnull IPv6Address ipv6Address)
focal_class.class_method_signature: DeviceManagerImpl.getAllDevices()
focal_class.full_signature: @Override public Collection<? extends IDevice> getAllDevices()
focal_class.identifier: getAllDevices
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: Collection<? extends IDevice>
focal_class.signature: Collection<? extends IDevice> getAllDevices()
focal_class.class_method_signature: DeviceManagerImpl.addIndex(boolean perClass,
  			EnumSet<DeviceField> keyFields)
focal_class.full_signature: @Override public void addIndex(boolean perClass,
  			EnumSet<DeviceField> keyFields)
focal_class.identifier: addIndex
focal_class.modifiers: @Override public
focal_class.parameters: (boolean perClass,
  			EnumSet<DeviceField> keyFields)
focal_class.return: void
focal_class.signature: void addIndex(boolean perClass,
  			EnumSet<DeviceField> keyFields)
focal_class.class_method_signature: DeviceManagerImpl.queryDevices(@Nonnull MacAddress macAddress,
  			VlanVid vlan,
  			@Nonnull IPv4Address ipv4Address,
  			@Nonnull IPv6Address ipv6Address,
  			@Nonnull DatapathId switchDPID,
  			@Nonnull OFPort switchPort)
focal_class.full_signature: @Override public Iterator<? extends IDevice> queryDevices(@Nonnull MacAddress macAddress,
  			VlanVid vlan,
  			@Nonnull IPv4Address ipv4Address,
  			@Nonnull IPv6Address ipv6Address,
  			@Nonnull DatapathId switchDPID,
  			@Nonnull OFPort switchPort)
focal_class.identifier: queryDevices
focal_class.modifiers: @Override public
focal_class.parameters: (@Nonnull MacAddress macAddress,
  			VlanVid vlan,
  			@Nonnull IPv4Address ipv4Address,
  			@Nonnull IPv6Address ipv6Address,
  			@Nonnull DatapathId switchDPID,
  			@Nonnull OFPort switchPort)
focal_class.return: Iterator<? extends IDevice>
focal_class.signature: Iterator<? extends IDevice> queryDevices(@Nonnull MacAddress macAddress,
  			VlanVid vlan,
  			@Nonnull IPv4Address ipv4Address,
  			@Nonnull IPv6Address ipv6Address,
  			@Nonnull DatapathId switchDPID,
  			@Nonnull OFPort switchPort)
focal_class.class_method_signature: DeviceManagerImpl.queryClassDevices(@Nonnull IEntityClass entityClass,
  			@Nonnull MacAddress macAddress,
  			@Nonnull VlanVid vlan,
  			@Nonnull IPv4Address ipv4Address,
  			@Nonnull IPv6Address ipv6Address,
  			@Nonnull DatapathId switchDPID,
  			@Nonnull OFPort switchPort)
focal_class.full_signature: @Override public Iterator<? extends IDevice> queryClassDevices(@Nonnull IEntityClass entityClass,
  			@Nonnull MacAddress macAddress,
  			@Nonnull VlanVid vlan,
  			@Nonnull IPv4Address ipv4Address,
  			@Nonnull IPv6Address ipv6Address,
  			@Nonnull DatapathId switchDPID,
  			@Nonnull OFPort switchPort)
focal_class.identifier: queryClassDevices
focal_class.modifiers: @Override public
focal_class.parameters: (@Nonnull IEntityClass entityClass,
  			@Nonnull MacAddress macAddress,
  			@Nonnull VlanVid vlan,
  			@Nonnull IPv4Address ipv4Address,
  			@Nonnull IPv6Address ipv6Address,
  			@Nonnull DatapathId switchDPID,
  			@Nonnull OFPort switchPort)
focal_class.return: Iterator<? extends IDevice>
focal_class.signature: Iterator<? extends IDevice> queryClassDevices(@Nonnull IEntityClass entityClass,
  			@Nonnull MacAddress macAddress,
  			@Nonnull VlanVid vlan,
  			@Nonnull IPv4Address ipv4Address,
  			@Nonnull IPv6Address ipv6Address,
  			@Nonnull DatapathId switchDPID,
  			@Nonnull OFPort switchPort)
focal_class.class_method_signature: DeviceManagerImpl.getDeviceIteratorForQuery(@Nonnull MacAddress macAddress,
  			VlanVid vlan,
  			@Nonnull IPv4Address ipv4Address,
  			@Nonnull IPv6Address ipv6Address,
  			@Nonnull DatapathId switchDPID,
  			@Nonnull OFPort switchPort)
focal_class.full_signature: protected Iterator<Device> getDeviceIteratorForQuery(@Nonnull MacAddress macAddress,
  			VlanVid vlan,
  			@Nonnull IPv4Address ipv4Address,
  			@Nonnull IPv6Address ipv6Address,
  			@Nonnull DatapathId switchDPID,
  			@Nonnull OFPort switchPort)
focal_class.identifier: getDeviceIteratorForQuery
focal_class.modifiers: protected
focal_class.parameters: (@Nonnull MacAddress macAddress,
  			VlanVid vlan,
  			@Nonnull IPv4Address ipv4Address,
  			@Nonnull IPv6Address ipv6Address,
  			@Nonnull DatapathId switchDPID,
  			@Nonnull OFPort switchPort)
focal_class.return: Iterator<Device>
focal_class.signature: Iterator<Device> getDeviceIteratorForQuery(@Nonnull MacAddress macAddress,
  			VlanVid vlan,
  			@Nonnull IPv4Address ipv4Address,
  			@Nonnull IPv6Address ipv6Address,
  			@Nonnull DatapathId switchDPID,
  			@Nonnull OFPort switchPort)
focal_class.class_method_signature: DeviceManagerImpl.addListener(IDeviceListener listener)
focal_class.full_signature: @Override public void addListener(IDeviceListener listener)
focal_class.identifier: addListener
focal_class.modifiers: @Override public
focal_class.parameters: (IDeviceListener listener)
focal_class.return: void
focal_class.signature: void addListener(IDeviceListener listener)
focal_class.class_method_signature: DeviceManagerImpl.addSuppressAPs(DatapathId swId, OFPort port)
focal_class.full_signature: @Override public void addSuppressAPs(DatapathId swId, OFPort port)
focal_class.identifier: addSuppressAPs
focal_class.modifiers: @Override public
focal_class.parameters: (DatapathId swId, OFPort port)
focal_class.return: void
focal_class.signature: void addSuppressAPs(DatapathId swId, OFPort port)
focal_class.class_method_signature: DeviceManagerImpl.removeSuppressAPs(DatapathId swId, OFPort port)
focal_class.full_signature: @Override public void removeSuppressAPs(DatapathId swId, OFPort port)
focal_class.identifier: removeSuppressAPs
focal_class.modifiers: @Override public
focal_class.parameters: (DatapathId swId, OFPort port)
focal_class.return: void
focal_class.signature: void removeSuppressAPs(DatapathId swId, OFPort port)
focal_class.class_method_signature: DeviceManagerImpl.getSuppressAPs()
focal_class.full_signature: @Override public Set<SwitchPort> getSuppressAPs()
focal_class.identifier: getSuppressAPs
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: Set<SwitchPort>
focal_class.signature: Set<SwitchPort> getSuppressAPs()
focal_class.class_method_signature: DeviceManagerImpl.logListeners()
focal_class.full_signature: private void logListeners()
focal_class.identifier: logListeners
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void logListeners()
focal_class.class_method_signature: DeviceManagerImpl.getInfo(String type)
focal_class.full_signature: @Override public Map<String, Object> getInfo(String type)
focal_class.identifier: getInfo
focal_class.modifiers: @Override public
focal_class.parameters: (String type)
focal_class.return: Map<String, Object>
focal_class.signature: Map<String, Object> getInfo(String type)
focal_class.class_method_signature: DeviceManagerImpl.getName()
focal_class.full_signature: @Override public String getName()
focal_class.identifier: getName
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: String
focal_class.signature: String getName()
focal_class.class_method_signature: DeviceManagerImpl.isCallbackOrderingPrereq(OFType type, String name)
focal_class.full_signature: @Override public boolean isCallbackOrderingPrereq(OFType type, String name)
focal_class.identifier: isCallbackOrderingPrereq
focal_class.modifiers: @Override public
focal_class.parameters: (OFType type, String name)
focal_class.return: boolean
focal_class.signature: boolean isCallbackOrderingPrereq(OFType type, String name)
focal_class.class_method_signature: DeviceManagerImpl.isCallbackOrderingPostreq(OFType type, String name)
focal_class.full_signature: @Override public boolean isCallbackOrderingPostreq(OFType type, String name)
focal_class.identifier: isCallbackOrderingPostreq
focal_class.modifiers: @Override public
focal_class.parameters: (OFType type, String name)
focal_class.return: boolean
focal_class.signature: boolean isCallbackOrderingPostreq(OFType type, String name)
focal_class.class_method_signature: DeviceManagerImpl.receive(IOFSwitch sw, OFMessage msg,
  			FloodlightContext cntx)
focal_class.full_signature: @Override public Command receive(IOFSwitch sw, OFMessage msg,
  			FloodlightContext cntx)
focal_class.identifier: receive
focal_class.modifiers: @Override public
focal_class.parameters: (IOFSwitch sw, OFMessage msg,
  			FloodlightContext cntx)
focal_class.return: Command
focal_class.signature: Command receive(IOFSwitch sw, OFMessage msg,
  			FloodlightContext cntx)
focal_class.class_method_signature: DeviceManagerImpl.getModuleServices()
focal_class.full_signature: @Override public Collection<Class<? extends IFloodlightService>> getModuleServices()
focal_class.identifier: getModuleServices
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: Collection<Class<? extends IFloodlightService>>
focal_class.signature: Collection<Class<? extends IFloodlightService>> getModuleServices()
focal_class.class_method_signature: DeviceManagerImpl.getServiceImpls()
focal_class.full_signature: @Override public Map<Class<? extends IFloodlightService>, IFloodlightService> getServiceImpls()
focal_class.identifier: getServiceImpls
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: Map<Class<? extends IFloodlightService>, IFloodlightService>
focal_class.signature: Map<Class<? extends IFloodlightService>, IFloodlightService> getServiceImpls()
focal_class.class_method_signature: DeviceManagerImpl.getModuleDependencies()
focal_class.full_signature: @Override public Collection<Class<? extends IFloodlightService>> getModuleDependencies()
focal_class.identifier: getModuleDependencies
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: Collection<Class<? extends IFloodlightService>>
focal_class.signature: Collection<Class<? extends IFloodlightService>> getModuleDependencies()
focal_class.class_method_signature: DeviceManagerImpl.init(FloodlightModuleContext fmc)
focal_class.full_signature: @Override public void init(FloodlightModuleContext fmc)
focal_class.identifier: init
focal_class.modifiers: @Override public
focal_class.parameters: (FloodlightModuleContext fmc)
focal_class.return: void
focal_class.signature: void init(FloodlightModuleContext fmc)
focal_class.class_method_signature: DeviceManagerImpl.registerDeviceManagerDebugEvents()
focal_class.full_signature: private void registerDeviceManagerDebugEvents()
focal_class.identifier: registerDeviceManagerDebugEvents
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void registerDeviceManagerDebugEvents()
focal_class.class_method_signature: DeviceManagerImpl.startUp(FloodlightModuleContext fmc)
focal_class.full_signature: @Override public void startUp(FloodlightModuleContext fmc)
focal_class.identifier: startUp
focal_class.modifiers: @Override public
focal_class.parameters: (FloodlightModuleContext fmc)
focal_class.return: void
focal_class.signature: void startUp(FloodlightModuleContext fmc)
focal_class.class_method_signature: DeviceManagerImpl.registerDeviceManagerDebugCounters()
focal_class.full_signature: private void registerDeviceManagerDebugCounters()
focal_class.identifier: registerDeviceManagerDebugCounters
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void registerDeviceManagerDebugCounters()
focal_class.class_method_signature: DeviceManagerImpl.processPacketInMessage(IOFSwitch sw, OFPacketIn pi, FloodlightContext cntx)
focal_class.full_signature: protected Command processPacketInMessage(IOFSwitch sw, OFPacketIn pi, FloodlightContext cntx)
focal_class.identifier: processPacketInMessage
focal_class.modifiers: protected
focal_class.parameters: (IOFSwitch sw, OFPacketIn pi, FloodlightContext cntx)
focal_class.return: Command
focal_class.signature: Command processPacketInMessage(IOFSwitch sw, OFPacketIn pi, FloodlightContext cntx)
focal_class.class_method_signature: DeviceManagerImpl.snoopDHCPClientName(Ethernet eth, Device srcDevice)
focal_class.full_signature: private void snoopDHCPClientName(Ethernet eth, Device srcDevice)
focal_class.identifier: snoopDHCPClientName
focal_class.modifiers: private
focal_class.parameters: (Ethernet eth, Device srcDevice)
focal_class.return: void
focal_class.signature: void snoopDHCPClientName(Ethernet eth, Device srcDevice)
focal_class.class_method_signature: DeviceManagerImpl.isValidAttachmentPoint(DatapathId switchDPID,
  			OFPort switchPort)
focal_class.full_signature: public boolean isValidAttachmentPoint(DatapathId switchDPID,
  			OFPort switchPort)
focal_class.identifier: isValidAttachmentPoint
focal_class.modifiers: public
focal_class.parameters: (DatapathId switchDPID,
  			OFPort switchPort)
focal_class.return: boolean
focal_class.signature: boolean isValidAttachmentPoint(DatapathId switchDPID,
  			OFPort switchPort)
focal_class.class_method_signature: DeviceManagerImpl.getSrcIPv4AddrFromARP(Ethernet eth, MacAddress dlAddr)
focal_class.full_signature: private IPv4Address getSrcIPv4AddrFromARP(Ethernet eth, MacAddress dlAddr)
focal_class.identifier: getSrcIPv4AddrFromARP
focal_class.modifiers: private
focal_class.parameters: (Ethernet eth, MacAddress dlAddr)
focal_class.return: IPv4Address
focal_class.signature: IPv4Address getSrcIPv4AddrFromARP(Ethernet eth, MacAddress dlAddr)
focal_class.class_method_signature: DeviceManagerImpl.getSrcIPv6Addr(Ethernet eth)
focal_class.full_signature: private IPv6Address getSrcIPv6Addr(Ethernet eth)
focal_class.identifier: getSrcIPv6Addr
focal_class.modifiers: private
focal_class.parameters: (Ethernet eth)
focal_class.return: IPv6Address
focal_class.signature: IPv6Address getSrcIPv6Addr(Ethernet eth)
focal_class.class_method_signature: DeviceManagerImpl.getSourceEntityFromPacket(Ethernet eth, DatapathId swdpid, OFPort port)
focal_class.full_signature: protected Entity getSourceEntityFromPacket(Ethernet eth, DatapathId swdpid, OFPort port)
focal_class.identifier: getSourceEntityFromPacket
focal_class.modifiers: protected
focal_class.parameters: (Ethernet eth, DatapathId swdpid, OFPort port)
focal_class.return: Entity
focal_class.signature: Entity getSourceEntityFromPacket(Ethernet eth, DatapathId swdpid, OFPort port)
focal_class.class_method_signature: DeviceManagerImpl.learnDeviceFromArpResponseData(Ethernet eth,
  			DatapathId swdpid,
  			OFPort port)
focal_class.full_signature: protected void learnDeviceFromArpResponseData(Ethernet eth,
  			DatapathId swdpid,
  			OFPort port)
focal_class.identifier: learnDeviceFromArpResponseData
focal_class.modifiers: protected
focal_class.parameters: (Ethernet eth,
  			DatapathId swdpid,
  			OFPort port)
focal_class.return: void
focal_class.signature: void learnDeviceFromArpResponseData(Ethernet eth,
  			DatapathId swdpid,
  			OFPort port)
focal_class.class_method_signature: DeviceManagerImpl.getDestEntityFromPacket(Ethernet eth)
focal_class.full_signature: protected Entity getDestEntityFromPacket(Ethernet eth)
focal_class.identifier: getDestEntityFromPacket
focal_class.modifiers: protected
focal_class.parameters: (Ethernet eth)
focal_class.return: Entity
focal_class.signature: Entity getDestEntityFromPacket(Ethernet eth)
focal_class.class_method_signature: DeviceManagerImpl.findDeviceByEntity(Entity entity)
focal_class.full_signature: protected Device findDeviceByEntity(Entity entity)
focal_class.identifier: findDeviceByEntity
focal_class.modifiers: protected
focal_class.parameters: (Entity entity)
focal_class.return: Device
focal_class.signature: Device findDeviceByEntity(Entity entity)
focal_class.class_method_signature: DeviceManagerImpl.findDestByEntity(IEntityClass reference,
  			Entity dstEntity)
focal_class.full_signature: protected Device findDestByEntity(IEntityClass reference,
  			Entity dstEntity)
focal_class.identifier: findDestByEntity
focal_class.modifiers: protected
focal_class.parameters: (IEntityClass reference,
  			Entity dstEntity)
focal_class.return: Device
focal_class.signature: Device findDestByEntity(IEntityClass reference,
  			Entity dstEntity)
focal_class.class_method_signature: DeviceManagerImpl.learnDeviceByEntity(Entity entity)
focal_class.full_signature: protected Device learnDeviceByEntity(Entity entity)
focal_class.identifier: learnDeviceByEntity
focal_class.modifiers: protected
focal_class.parameters: (Entity entity)
focal_class.return: Device
focal_class.signature: Device learnDeviceByEntity(Entity entity)
focal_class.class_method_signature: DeviceManagerImpl.isEntityAllowed(Entity entity, IEntityClass entityClass)
focal_class.full_signature: protected boolean isEntityAllowed(Entity entity, IEntityClass entityClass)
focal_class.identifier: isEntityAllowed
focal_class.modifiers: protected
focal_class.parameters: (Entity entity, IEntityClass entityClass)
focal_class.return: boolean
focal_class.signature: boolean isEntityAllowed(Entity entity, IEntityClass entityClass)
focal_class.class_method_signature: DeviceManagerImpl.findChangedFields(Device device,
  			Entity newEntity)
focal_class.full_signature: protected EnumSet<DeviceField> findChangedFields(Device device,
  			Entity newEntity)
focal_class.identifier: findChangedFields
focal_class.modifiers: protected
focal_class.parameters: (Device device,
  			Entity newEntity)
focal_class.return: EnumSet<DeviceField>
focal_class.signature: EnumSet<DeviceField> findChangedFields(Device device,
  			Entity newEntity)
focal_class.class_method_signature: DeviceManagerImpl.processUpdates(Queue<DeviceUpdate> updates)
focal_class.full_signature: protected void processUpdates(Queue<DeviceUpdate> updates)
focal_class.identifier: processUpdates
focal_class.modifiers: protected
focal_class.parameters: (Queue<DeviceUpdate> updates)
focal_class.return: void
focal_class.signature: void processUpdates(Queue<DeviceUpdate> updates)
focal_class.class_method_signature: DeviceManagerImpl.notifyListeners(List<IDeviceListener> listeners, DeviceUpdate update)
focal_class.full_signature: protected void notifyListeners(List<IDeviceListener> listeners, DeviceUpdate update)
focal_class.identifier: notifyListeners
focal_class.modifiers: protected
focal_class.parameters: (List<IDeviceListener> listeners, DeviceUpdate update)
focal_class.return: void
focal_class.signature: void notifyListeners(List<IDeviceListener> listeners, DeviceUpdate update)
focal_class.class_method_signature: DeviceManagerImpl.allKeyFieldsPresent(Entity e, EnumSet<DeviceField> keyFields)
focal_class.full_signature: protected boolean allKeyFieldsPresent(Entity e, EnumSet<DeviceField> keyFields)
focal_class.identifier: allKeyFieldsPresent
focal_class.modifiers: protected
focal_class.parameters: (Entity e, EnumSet<DeviceField> keyFields)
focal_class.return: boolean
focal_class.signature: boolean allKeyFieldsPresent(Entity e, EnumSet<DeviceField> keyFields)
focal_class.class_method_signature: DeviceManagerImpl.updateUpdates(LinkedList<DeviceUpdate> list, DeviceUpdate update)
focal_class.full_signature: private LinkedList<DeviceUpdate> updateUpdates(LinkedList<DeviceUpdate> list, DeviceUpdate update)
focal_class.identifier: updateUpdates
focal_class.modifiers: private
focal_class.parameters: (LinkedList<DeviceUpdate> list, DeviceUpdate update)
focal_class.return: LinkedList<DeviceUpdate>
focal_class.signature: LinkedList<DeviceUpdate> updateUpdates(LinkedList<DeviceUpdate> list, DeviceUpdate update)
focal_class.class_method_signature: DeviceManagerImpl.getClassState(IEntityClass clazz)
focal_class.full_signature: private ClassState getClassState(IEntityClass clazz)
focal_class.identifier: getClassState
focal_class.modifiers: private
focal_class.parameters: (IEntityClass clazz)
focal_class.return: ClassState
focal_class.signature: ClassState getClassState(IEntityClass clazz)
focal_class.class_method_signature: DeviceManagerImpl.updateIndices(Device device, Long deviceKey)
focal_class.full_signature: private boolean updateIndices(Device device, Long deviceKey)
focal_class.identifier: updateIndices
focal_class.modifiers: private
focal_class.parameters: (Device device, Long deviceKey)
focal_class.return: boolean
focal_class.signature: boolean updateIndices(Device device, Long deviceKey)
focal_class.class_method_signature: DeviceManagerImpl.updateSecondaryIndices(Entity entity,
  			 IEntityClass entityClass,
  			 Long deviceKey)
focal_class.full_signature: private void updateSecondaryIndices(Entity entity,
  			 IEntityClass entityClass,
  			 Long deviceKey)
focal_class.identifier: updateSecondaryIndices
focal_class.modifiers: private
focal_class.parameters: (Entity entity,
  			 IEntityClass entityClass,
  			 Long deviceKey)
focal_class.return: void
focal_class.signature: void updateSecondaryIndices(Entity entity,
  			 IEntityClass entityClass,
  			 Long deviceKey)
focal_class.class_method_signature: DeviceManagerImpl.cleanupEntities()
focal_class.full_signature: protected void cleanupEntities()
focal_class.identifier: cleanupEntities
focal_class.modifiers: protected
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void cleanupEntities()
focal_class.class_method_signature: DeviceManagerImpl.removeEntity(Entity removed,
  			 IEntityClass entityClass,
  			 Long deviceKey,
  			 Collection<Entity> others)
focal_class.full_signature: protected void removeEntity(Entity removed,
  			 IEntityClass entityClass,
  			 Long deviceKey,
  			 Collection<Entity> others)
focal_class.identifier: removeEntity
focal_class.modifiers: protected
focal_class.parameters: (Entity removed,
  			 IEntityClass entityClass,
  			 Long deviceKey,
  			 Collection<Entity> others)
focal_class.return: void
focal_class.signature: void removeEntity(Entity removed,
  			 IEntityClass entityClass,
  			 Long deviceKey,
  			 Collection<Entity> others)
focal_class.class_method_signature: DeviceManagerImpl.deleteDevice(Device device)
focal_class.full_signature: protected void deleteDevice(Device device)
focal_class.identifier: deleteDevice
focal_class.modifiers: protected
focal_class.parameters: (Device device)
focal_class.return: void
focal_class.signature: void deleteDevice(Device device)
focal_class.class_method_signature: DeviceManagerImpl.getEntityKeys(@Nonnull MacAddress macAddress,
  			 VlanVid vlan, /* A null VLAN means 'don't care'; VlanVid.ZERO means 'untagged' */
  			 @Nonnull IPv4Address ipv4Address,
  			 @Nonnull IPv6Address ipv6Address,
  			 @Nonnull DatapathId switchDPID,
  			 @Nonnull OFPort switchPort)
focal_class.full_signature: private EnumSet<DeviceField> getEntityKeys(@Nonnull MacAddress macAddress,
  			 VlanVid vlan, /* A null VLAN means 'don't care'; VlanVid.ZERO means 'untagged' */
  			 @Nonnull IPv4Address ipv4Address,
  			 @Nonnull IPv6Address ipv6Address,
  			 @Nonnull DatapathId switchDPID,
  			 @Nonnull OFPort switchPort)
focal_class.identifier: getEntityKeys
focal_class.modifiers: private
focal_class.parameters: (@Nonnull MacAddress macAddress,
  			 VlanVid vlan, /* A null VLAN means 'don't care'; VlanVid.ZERO means 'untagged' */
  			 @Nonnull IPv4Address ipv4Address,
  			 @Nonnull IPv6Address ipv6Address,
  			 @Nonnull DatapathId switchDPID,
  			 @Nonnull OFPort switchPort)
focal_class.return: EnumSet<DeviceField>
focal_class.signature: EnumSet<DeviceField> getEntityKeys(@Nonnull MacAddress macAddress,
  			 VlanVid vlan, /* A null VLAN means 'don't care'; VlanVid.ZERO means 'untagged' */
  			 @Nonnull IPv4Address ipv4Address,
  			 @Nonnull IPv6Address ipv6Address,
  			 @Nonnull DatapathId switchDPID,
  			 @Nonnull OFPort switchPort)
focal_class.class_method_signature: DeviceManagerImpl.queryClassByEntity(IEntityClass clazz,
  			 EnumSet<DeviceField> keyFields,
  			 Entity entity)
focal_class.full_signature: protected Iterator<Device> queryClassByEntity(IEntityClass clazz,
  			 EnumSet<DeviceField> keyFields,
  			 Entity entity)
focal_class.identifier: queryClassByEntity
focal_class.modifiers: protected
focal_class.parameters: (IEntityClass clazz,
  			 EnumSet<DeviceField> keyFields,
  			 Entity entity)
focal_class.return: Iterator<Device>
focal_class.signature: Iterator<Device> queryClassByEntity(IEntityClass clazz,
  			 EnumSet<DeviceField> keyFields,
  			 Entity entity)
focal_class.class_method_signature: DeviceManagerImpl.allocateDevice(Long deviceKey,
  			 Entity entity,
  			 IEntityClass entityClass)
focal_class.full_signature: protected Device allocateDevice(Long deviceKey,
  			 Entity entity,
  			 IEntityClass entityClass)
focal_class.identifier: allocateDevice
focal_class.modifiers: protected
focal_class.parameters: (Long deviceKey,
  			 Entity entity,
  			 IEntityClass entityClass)
focal_class.return: Device
focal_class.signature: Device allocateDevice(Long deviceKey,
  			 Entity entity,
  			 IEntityClass entityClass)
focal_class.class_method_signature: DeviceManagerImpl.allocateDevice(Long deviceKey,
  			 String dhcpClientName,
  			 List<AttachmentPoint> aps,
  			 List<AttachmentPoint> trueAPs,
  			 Collection<Entity> entities,
  			 IEntityClass entityClass)
focal_class.full_signature: protected Device allocateDevice(Long deviceKey,
  			 String dhcpClientName,
  			 List<AttachmentPoint> aps,
  			 List<AttachmentPoint> trueAPs,
  			 Collection<Entity> entities,
  			 IEntityClass entityClass)
focal_class.identifier: allocateDevice
focal_class.modifiers: protected
focal_class.parameters: (Long deviceKey,
  			 String dhcpClientName,
  			 List<AttachmentPoint> aps,
  			 List<AttachmentPoint> trueAPs,
  			 Collection<Entity> entities,
  			 IEntityClass entityClass)
focal_class.return: Device
focal_class.signature: Device allocateDevice(Long deviceKey,
  			 String dhcpClientName,
  			 List<AttachmentPoint> aps,
  			 List<AttachmentPoint> trueAPs,
  			 Collection<Entity> entities,
  			 IEntityClass entityClass)
focal_class.class_method_signature: DeviceManagerImpl.allocateDevice(Device device,
  			 Entity entity,
  			 int insertionpoint)
focal_class.full_signature: protected Device allocateDevice(Device device,
  			 Entity entity,
  			 int insertionpoint)
focal_class.identifier: allocateDevice
focal_class.modifiers: protected
focal_class.parameters: (Device device,
  			 Entity entity,
  			 int insertionpoint)
focal_class.return: Device
focal_class.signature: Device allocateDevice(Device device,
  			 Entity entity,
  			 int insertionpoint)
focal_class.class_method_signature: DeviceManagerImpl.topologyChanged(List<LDUpdate> updateList)
focal_class.full_signature: @Override public void topologyChanged(List<LDUpdate> updateList)
focal_class.identifier: topologyChanged
focal_class.modifiers: @Override public
focal_class.parameters: (List<LDUpdate> updateList)
focal_class.return: void
focal_class.signature: void topologyChanged(List<LDUpdate> updateList)
focal_class.class_method_signature: DeviceManagerImpl.sendDeviceMovedNotification(Device d)
focal_class.full_signature: protected void sendDeviceMovedNotification(Device d)
focal_class.identifier: sendDeviceMovedNotification
focal_class.modifiers: protected
focal_class.parameters: (Device d)
focal_class.return: void
focal_class.signature: void sendDeviceMovedNotification(Device d)
focal_class.class_method_signature: DeviceManagerImpl.entityClassChanged(Set<String> entityClassNames)
focal_class.full_signature: @Override public void entityClassChanged(Set<String> entityClassNames)
focal_class.identifier: entityClassChanged
focal_class.modifiers: @Override public
focal_class.parameters: (Set<String> entityClassNames)
focal_class.return: void
focal_class.signature: void entityClassChanged(Set<String> entityClassNames)
focal_class.class_method_signature: DeviceManagerImpl.reclassifyDevice(Device device)
focal_class.full_signature: protected boolean reclassifyDevice(Device device)
focal_class.identifier: reclassifyDevice
focal_class.modifiers: protected
focal_class.parameters: (Device device)
focal_class.return: boolean
focal_class.signature: boolean reclassifyDevice(Device device)
focal_class.class_method_signature: DeviceManagerImpl.setSyncStoreWriteInterval(int intervalMs)
focal_class.full_signature:  void setSyncStoreWriteInterval(int intervalMs)
focal_class.identifier: setSyncStoreWriteInterval
focal_class.parameters: (int intervalMs)
focal_class.return: void
focal_class.signature: void setSyncStoreWriteInterval(int intervalMs)
focal_class.class_method_signature: DeviceManagerImpl.setInitialSyncStoreConsolidateMs(int intervalMs)
focal_class.full_signature:  void setInitialSyncStoreConsolidateMs(int intervalMs)
focal_class.identifier: setInitialSyncStoreConsolidateMs
focal_class.parameters: (int intervalMs)
focal_class.return: void
focal_class.signature: void setInitialSyncStoreConsolidateMs(int intervalMs)
focal_class.class_method_signature: DeviceManagerImpl.scheduleConsolidateStoreNow()
focal_class.full_signature:  void scheduleConsolidateStoreNow()
focal_class.identifier: scheduleConsolidateStoreNow
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void scheduleConsolidateStoreNow()
focal_class.class_method_signature: DeviceManagerImpl.setSyncServiceIfNotSet(ISyncService syncService)
focal_class.full_signature: protected void setSyncServiceIfNotSet(ISyncService syncService)
focal_class.identifier: setSyncServiceIfNotSet
focal_class.modifiers: protected
focal_class.parameters: (ISyncService syncService)
focal_class.return: void
focal_class.signature: void setSyncServiceIfNotSet(ISyncService syncService)
focal_class.class_method_signature: DeviceManagerImpl.getHAListener()
focal_class.full_signature:  IHAListener getHAListener()
focal_class.identifier: getHAListener
focal_class.parameters: ()
focal_class.return: IHAListener
focal_class.signature: IHAListener getHAListener()
focal_method.body: protected Device learnDeviceByEntity(Entity entity) {
  		ArrayList<Long> deleteQueue = null;
  		LinkedList<DeviceUpdate> deviceUpdates = null;
  		Device device = null;
  
  		// we may need to restart the learning process if we detect
  		// concurrent modification.  Note that we ensure that at least
  		// one thread should always succeed so we don't get into infinite
  		// starvation loops
  		while (true) {
  			deviceUpdates = null;
  
  			// Look up the fully-qualified entity to see if it already
  			// exists in the primary entity index.
  			Long deviceKey = primaryIndex.findByEntity(entity);
  			IEntityClass entityClass = null;
  
  			if (deviceKey == null) {
  				// If the entity does not exist in the primary entity index,
  				// use the entity classifier for find the classes for the
  				// entity. Look up the entity in the returned class'
  				// class entity index.
  				entityClass = entityClassifier.classifyEntity(entity);
  				if (entityClass == null) {
  					// could not classify entity. No device
  					device = null;
  					break;
  				}
  				ClassState classState = getClassState(entityClass);
  
  				if (classState.classIndex != null) {
  					deviceKey = classState.classIndex.findByEntity(entity);
  				}
  			}
  			if (deviceKey != null) {
  				// If the primary or secondary index contains the entity
  				// use resulting device key to look up the device in the
  				// device map, and use the referenced Device below.
  				device = deviceMap.get(deviceKey);
  				if (device == null) {
  					// This can happen due to concurrent modification
  					if (logger.isDebugEnabled()) {
  						logger.debug("No device for deviceKey {} while "
  								+ "while processing entity {}",
  								deviceKey, entity);
  					}
  					// if so, then try again till we don't even get the device key
  					// and so we recreate the device
  					continue;
  				}
  			} else {
  				// If the secondary index does not contain the entity,
  				// create a new Device object containing the entity, and
  				// generate a new device ID if the the entity is on an
  				// attachment point port. Otherwise ignore.
  				if (entity.hasSwitchPort() && !topology.isAttachmentPointPort(entity.getSwitchDPID(), entity.getSwitchPort())) {
  					cntDeviceOnInternalPortNotLearned.increment();
  					if (logger.isDebugEnabled()) {
  						logger.debug("Not learning new device on internal"
  								+ " link: {}", entity);
  					}
  					device = null;
  					break;
  				}
  				// Before we create the new device also check if
  				// the entity is allowed (e.g., for spoofing protection)
  				if (!isEntityAllowed(entity, entityClass)) {
  					cntPacketNotAllowed.increment();
  					if (logger.isDebugEnabled()) {
  						logger.debug("PacketIn is not allowed {} {}",
  								entityClass.getName(), entity);
  					}
  					device = null;
  					break;
  				}
  				deviceKey = deviceKeyCounter.getAndIncrement();
  				device = allocateDevice(deviceKey, entity, entityClass);
  
  
  				// Add the new device to the primary map with a simple put
  				deviceMap.put(deviceKey, device);
  				// update indices
  				if (!updateIndices(device, deviceKey)) {
  					if (deleteQueue == null)
  						deleteQueue = new ArrayList<Long>();
  					deleteQueue.add(deviceKey);
  					continue;
  				}
  
  				updateSecondaryIndices(entity, entityClass, deviceKey);
  
  				// We need to count and log here. If we log earlier we could
  				// hit a concurrent modification and restart the dev creation
  				// and potentially count the device twice.
  				cntNewDevice.increment();
  				if (logger.isDebugEnabled()) {
  					logger.debug("New device created: {} deviceKey={}, entity={}",
  							new Object[]{device, deviceKey, entity});
  				}
  				// generate new device update
  				deviceUpdates = updateUpdates(deviceUpdates, new DeviceUpdate(device, ADD, null));
  
  				break;
  			}
  			// if it gets here, we have a pre-existing Device for this Entity
  			if (!isEntityAllowed(entity, device.getEntityClass())) {
  				cntPacketNotAllowed.increment();
  				if (logger.isDebugEnabled()) {
  					logger.info("PacketIn is not allowed {} {}",
  							device.getEntityClass().getName(), entity);
  				}
  				return null;
  			}
  			// If this is not an attachment point port we don't learn the new entity
  			// and don't update indexes. But we do allow the device to continue up
  			// the chain.
  			if (entity.hasSwitchPort() && !topology.isAttachmentPointPort(entity.getSwitchDPID(), entity.getSwitchPort())) {
  				cntPacketOnInternalPortForKnownDevice.increment();
  				break;
  			}
  			
  			int entityindex = -1;
  			if ((entityindex = device.entityIndex(entity)) >= 0) {
  				// Entity already exists
  				// update timestamp on the found entity
  				Date lastSeen = entity.getLastSeenTimestamp();
  				if (lastSeen.equals(Entity.NO_DATE)) {
  					lastSeen = new Date();
  					entity.setLastSeenTimestamp(lastSeen);
  				}
  				device.entities[entityindex].setLastSeenTimestamp(lastSeen);
  				// we break the loop after checking for changes to the AP
  			} else {
  				// New entity for this device
  				// compute the insertion point for the entity.
  				// see Arrays.binarySearch()
  				entityindex = -(entityindex + 1);
  				Device newDevice = allocateDevice(device, entity, entityindex);
  
  				// generate updates
  				EnumSet<DeviceField> changedFields = findChangedFields(device, entity);
  
  				// update the device map with a replace call
  				boolean res = deviceMap.replace(deviceKey, device, newDevice);
  				// If replace returns false, restart the process from the
  				// beginning (this implies another thread concurrently
  				// modified this Device).
  				if (!res)
  					continue;
  
  				device = newDevice;
  				// update indices
  				if (!updateIndices(device, deviceKey)) {
  					continue;
  				}
  				updateSecondaryIndices(entity,
  						device.getEntityClass(),
  						deviceKey);
  
  				// We need to count here after all the possible "continue"
  				// statements in this branch
  				cntNewEntity.increment();
  				if (changedFields.size() > 0) {
  					cntDeviceChanged.increment();
  					deviceUpdates =
  							updateUpdates(deviceUpdates,
  									new DeviceUpdate(newDevice, CHANGE,
  											changedFields));
  				}
  				// we break the loop after checking for changed AP
  			}
  			// Update attachment point (will only be hit if the device
  			// already existed and no concurrent modification)
  			if (entity.hasSwitchPort()) {
  				boolean moved = device.updateAttachmentPoint(entity.getSwitchDPID(),
  						entity.getSwitchPort(),
  						entity.getLastSeenTimestamp());
  				if (moved) {
  					// we count device moved events in sendDeviceMovedNotification()
  					// TODO remove this. It's now done in the event handler as a result of the update above... sendDeviceMovedNotification(device);
  					if (logger.isTraceEnabled()) {
  						logger.trace("Device moved: attachment points {}," +
  								"entities {}", device.attachmentPoints,
  								device.entities);
  					}
  				} else {
  					if (logger.isTraceEnabled()) {
  						logger.trace("Device attachment point updated: " +
  								"attachment points {}," +
  								"entities {}", device.attachmentPoints,
  								device.entities);
  					}
  				}
  			}
  			break;
  		}
  
  		if (deleteQueue != null) {
  			for (Long l : deleteQueue) {
  				Device dev = deviceMap.get(l);
  				this.deleteDevice(dev);
  			}
  		}
  		processUpdates(deviceUpdates);
  		deviceSyncManager.storeDeviceThrottled(device);
  
  		return device;
  	}
focal_method.class_method_signature: DeviceManagerImpl.learnDeviceByEntity(Entity entity)
focal_method.full_signature: protected Device learnDeviceByEntity(Entity entity)
focal_method.identifier: learnDeviceByEntity
focal_method.invocations: findByEntity classifyEntity getClassState findByEntity get isDebugEnabled debug hasSwitchPort isAttachmentPointPort getSwitchDPID getSwitchPort increment isDebugEnabled debug isEntityAllowed increment isDebugEnabled debug getName getAndIncrement allocateDevice put updateIndices add updateSecondaryIndices increment isDebugEnabled debug updateUpdates isEntityAllowed getEntityClass increment isDebugEnabled info getName getEntityClass hasSwitchPort isAttachmentPointPort getSwitchDPID getSwitchPort increment entityIndex getLastSeenTimestamp equals setLastSeenTimestamp setLastSeenTimestamp allocateDevice findChangedFields replace updateIndices updateSecondaryIndices getEntityClass increment size increment updateUpdates hasSwitchPort updateAttachmentPoint getSwitchDPID getSwitchPort getLastSeenTimestamp isTraceEnabled trace isTraceEnabled trace get deleteDevice processUpdates storeDeviceThrottled
focal_method.modifiers: protected
focal_method.parameters: (Entity entity)
focal_method.return: Device
focal_method.signature: Device learnDeviceByEntity(Entity entity)