// send a packet public int send(DatagramPacket p, Client sender, EmuSocket socket) { boolean sentSomething = false; Client receiver = getReceiver(sender); if (receiver == null) throw new RuntimeException("ERROR: send() called on wrong link"); Vector receiverSockets = receiver.getSockets(); if (!this.isNextPacketDeliverable()) { return Link.PACKET_LOST; } for (Iterator iter = receiverSockets.iterator(); iter.hasNext(); ) { EmuSocket curSocket = (EmuSocket) iter.next(); if (curSocket.getGroups().contains(p.getAddress())) { // send the packet to the socket curSocket.receivePacket(p, this.getDelay()); sentSomething = true; } } if (sentSomething) { if (Options.flashTime != 0) { // adjust color of arrow (-> flashing) if (receiver == this.start) { // change the color of the link if (flashThreadStart == null || !flashThreadStart.isAlive()) { flashThreadStart = new FlashLinkThread(true); flashThreadStart.start(); } else { flashThreadStart.reset(); } } else { // change the color of the link if (flashThreadEnd == null || !flashThreadEnd.isAlive()) { flashThreadEnd = new FlashLinkThread(false); flashThreadEnd.start(); } else { flashThreadEnd.reset(); } } } return Link.PACKET_SENT; } else { return Link.NO_GROUP_MEMBER; } }