/** Closes all open sockets and stops the internal server thread that processes messages. */ public void close() { ServerThread st = server; if (st != null) { st.close(); try { st.join(); } catch (InterruptedException ex) { logger.warn(ex); } server = null; for (Iterator it = sockets.values().iterator(); it.hasNext(); ) { SocketEntry entry = (SocketEntry) it.next(); try { synchronized (entry) { entry.getSocket().close(); } logger.debug("Socket to " + entry.getPeerAddress() + " closed"); } catch (IOException iox) { // ingore logger.debug(iox); } } if (socketCleaner != null) { socketCleaner.cancel(); } socketCleaner = null; } }
public void close() { stop = true; ServerThread st = server; if (st != null) { st.interrupt(); } }
/** * Returns the name of the listen thread. * * @return the thread name if in listening mode, otherwise <code>null</code>. * @since 1.6 */ public String getThreadName() { ServerThread st = server; if (st != null) { return st.getName(); } else { return null; } }
/** * Returns the priority of the internal listen thread. * * @return a value between {@link Thread#MIN_PRIORITY} and {@link Thread#MAX_PRIORITY}. * @since 1.2.2 */ public int getPriority() { ServerThread st = server; if (st != null) { return st.getPriority(); } else { return Thread.NORM_PRIORITY; } }
/** * Listen for incoming and outgoing requests. If the <code>serverEnabled</code> member is <code> * false</code> the server for incoming requests is not started. This starts the internal server * thread that processes messages. * * @throws SocketException when the transport is already listening for incoming/outgoing messages. * @throws IOException */ public synchronized void listen() throws java.io.IOException { if (server != null) { throw new SocketException("Port already listening"); } server = new ServerThread(); if (connectionTimeout > 0) { socketCleaner = new Timer(true); // run as daemon } server.setDaemon(true); server.start(); }
/** * Sends a SNMP message to the supplied address. * * @param address an <code>TcpAddress</code>. A <code>ClassCastException</code> is thrown if * <code>address</code> is not a <code>TcpAddress</code> instance. * @param message byte[] the message to sent. * @throws IOException */ public void sendMessage(Address address, byte[] message) throws java.io.IOException { if (server == null) { listen(); } server.sendMessage(address, message); }
/** * Sets the name of the listen thread for this UDP transport mapping. This method has no effect, * if called before {@link #listen()} has been called for this transport mapping. * * @param name the new thread name. * @since 1.6 */ public void setThreadName(String name) { ServerThread st = server; if (st != null) { st.setName(name); } }
/** * Changes the priority of the server thread for this TCP transport mapping. This method has no * effect, if called before {@link #listen()} has been called for this transport mapping. * * @param newPriority the new priority. * @see Thread#setPriority * @since 1.2.2 */ public void setPriority(int newPriority) { ServerThread st = server; if (st != null) { st.setPriority(newPriority); } }