private void doCatcher() { try { GnutellaCatcher catcher = new GnutellaCatcher(mgr, gs); if (SERVER_HOSTNAME != null) { catcher.doCatch(CATCHER_CONNECTIONS, SERVER_HOSTNAME, GnutellaConst.DEFAULT_GNUTELLA_PORT); } else { catcher.doCatch(CATCHER_CONNECTIONS); } } catch (Exception e) { System.err.println("Got exception in doCatcher: " + e); e.printStackTrace(); } }
/** The main event handling code. */ public void handleEvent(QueueElementIF item) { try { if (DEBUG) System.err.println("**** GOT: " + item); if (item instanceof GnutellaPingPacket) { GnutellaPingPacket ping = (GnutellaPingPacket) item; if (VERBOSE) System.err.println("-- Got ping: " + ping); if (ROUTE_PACKETS) { if (rememberPacket(ping)) { forwardPacketToAll(ping); } } if (SEND_PONGS) { GnutellaPongPacket pong = new GnutellaPongPacket(ping.getGUID(), NUM_FILES, NUM_KB); if (VERBOSE) System.err.println("-- Sending pong to: " + ping.getConnection()); ping.getConnection().enqueue_lossy(pong); } } else if (item instanceof GnutellaQueryPacket) { GnutellaQueryPacket query = (GnutellaQueryPacket) item; if (VERBOSE) System.err.println("-- Got query: " + query.getSearchTerm()); if (ROUTE_PACKETS) { if (rememberPacket(query)) { forwardPacketToAll(query); } } } else if (item instanceof GnutellaPongPacket) { GnutellaPongPacket pong = (GnutellaPongPacket) item; if (VERBOSE) System.err.println("-- Got pong: " + pong); if (ROUTE_PACKETS) forwardPacket(pong); } else if (item instanceof GnutellaQueryHitsPacket) { GnutellaQueryHitsPacket hits = (GnutellaQueryHitsPacket) item; if (VERBOSE) System.err.println("-- Got hits: " + hits); if (ROUTE_PACKETS) forwardPacket(hits); } else if (item instanceof GnutellaPushPacket) { if (VERBOSE) System.err.println("-- Dropping push packet (unimplemented)"); } else if (item instanceof GnutellaConnection) { if (VERBOSE) System.err.println("-- New connection: " + item); num_connections++; } else if (item instanceof SinkClosedEvent) { if (VERBOSE) System.err.println("-- Connection closed: " + item); num_connections--; SinkClosedEvent sce = (SinkClosedEvent) item; if ((num_connections <= MIN_CONNECTIONS) && DO_CATCHER) doCatcher(); } else if (item instanceof SinkCloggedEvent) { if (VERBOSE) System.err.println("-- Connection clogged: " + item); SinkCloggedEvent clogged = (SinkCloggedEvent) item; // Close down clogged connections GnutellaConnection gc = (GnutellaConnection) clogged.sink; System.err.println("GL: Closing clogged connection " + gc); gc.close(mySink); } else if (item instanceof timerEvent) { doTimer((timerEvent) item); } } catch (Exception e) { System.err.println("WORKER GOT EXCEPTION: " + e.getMessage()); e.printStackTrace(); } }