/** Find objects that are in visibility range. */ protected void findVisibleObjects() { if (owner == null || !owner.isSpawned()) { return; } MapRegion[] regions = owner.getActiveRegion().getNeighbours(); for (int i = 0; i < regions.length; i++) { MapRegion r = regions[i]; FastMap<Integer, VisibleObject> objects = r.getObjects(); for (FastMap.Entry<Integer, VisibleObject> e = objects.head(), mapEnd = objects.tail(); (e = e.getNext()) != mapEnd; ) { VisibleObject newObject = e.getValue(); if (newObject == owner || newObject == null) { continue; } if (!isAwareOf(newObject)) { continue; } if (knownObjects.containsKey(newObject.getObjectId())) { continue; } if (!checkObjectInRange(newObject) && !newObject.getKnownList().checkReversedObjectInRange(owner)) { continue; } /** New object is not known. */ if (add(newObject)) { newObject.getKnownList().add(owner); } } } }
private FastMap newLocalMap() { // First, do some cleanup (remove dead threads). for (FastMap.Entry e = THREAD_TO_LOCAL_MAP.head(), end = THREAD_TO_LOCAL_MAP.tail(); (e = (FastMap.Entry) e.getNext()) != end; ) { Thread thread = (Thread) e.getKey(); if (!thread.isAlive()) { THREAD_TO_LOCAL_MAP.remove(thread); } } FastMap localMap = new FastMap(); THREAD_TO_LOCAL_MAP.put(Thread.currentThread(), localMap); return localMap; }
public void doOnAllObjects(Visitor<VisibleObject> visitor) { try { for (FastMap.Entry<Integer, VisibleObject> e = knownObjects.head(), mapEnd = knownObjects.tail(); (e = e.getNext()) != mapEnd; ) { VisibleObject newObject = e.getValue(); if (newObject != null) { visitor.visit(newObject); } } } catch (Exception ex) { // log.error("Exception when running visitor on all objects" + ex); } }
public void doOnAllPlayers(Visitor<Player> visitor) { if (knownPlayers == null) { return; } try { for (FastMap.Entry<Integer, Player> e = knownPlayers.head(), mapEnd = knownPlayers.tail(); (e = e.getNext()) != mapEnd; ) { Player player = e.getValue(); if (player != null) { visitor.visit(player); } } } catch (Exception ex) { // log.error("Exception when running visitor on all players" + ex); } }
public int doOnAllNpcs(Visitor<Npc> visitor, int iterationLimit) { int counter = 0; try { for (FastMap.Entry<Integer, VisibleObject> e = knownObjects.head(), mapEnd = knownObjects.tail(); (e = e.getNext()) != mapEnd; ) { VisibleObject newObject = e.getValue(); if (newObject instanceof Npc) { if ((++counter) == iterationLimit) { break; } visitor.visit((Npc) newObject); } } } catch (Exception ex) { // log.error("Exception when running visitor on all npcs" + ex); } return counter; }
@Override public void start() { this.persistFile.clear(); if (persistDir != null) { this.persistFile .append(persistDir) .append(File.separator) .append(this.name) .append("_") .append(PERSIST_FILE_NAME); } else { persistFile .append( System.getProperty(SCCP_MANAGEMENT_PERSIST_DIR_KEY, System.getProperty(USER_DIR_KEY))) .append(File.separator) .append(this.name) .append("_") .append(PERSIST_FILE_NAME); } logger.info( String.format("SCCP Management configuration file path %s", persistFile.toString())); try { this.load(); } catch (FileNotFoundException e) { logger.warn( String.format( "Failed to load the Sccp Management configuration file. \n%s", e.getMessage())); } this.messageFactory = new MessageFactoryImpl(this); this.sccpProvider = new SccpProviderImpl(this); super.sccpManagement = new SccpManagementProxy(this.getName(), sccpProvider, this); super.sccpRoutingControl = new SccpRoutingControl(sccpProvider, this); super.sccpManagement.setSccpRoutingControl(sccpRoutingControl); super.sccpRoutingControl.setSccpManagement(sccpManagement); this.router = new RouterImpl(this.getName(), this); this.router.setPersistDir(this.getPersistDir()); this.router.start(); this.sccpResource = new SccpResourceImpl(this.getName()); this.sccpResource.setPersistDir(this.getPersistDir()); this.sccpResource.start(); this.sccpRoutingControl.start(); this.sccpManagement.start(); // layer3exec.execute(new MtpStreamHandler()); this.timerExecutors = Executors.newScheduledThreadPool(1); for (FastMap.Entry<Integer, Mtp3UserPart> e = this.mtp3UserParts.head(), end = this.mtp3UserParts.tail(); (e = e.getNext()) != end; ) { Mtp3UserPart mup = e.getValue(); mup.addMtp3UserPartListener(this); } // this.mtp3UserPart.addMtp3UserPartListener(this); this.state = State.RUNNING; }