/* * Copyright 2015-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under the License * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express * or implied. See the License for the specific language governing permissions and limitations under * the License. */ package sockslib.server; import sockslib.client.SocksProxy; import sockslib.common.SocksException; import sockslib.server.msg.CommandMessage; import java.io.IOException; /** * The interface <code>SocksHandler</code> represents a socket handler. * * @author Youchao Feng * @version 1.0 * @date Mar 25, 2015 11:33:28 AM */ public interface SocksHandler extends Runnable { /** * Handles a session. * * @param session Session. * @throws Exception If any error occurred. */ void handle(Session session) throws Exception; /** * Do CONNECTE command. * * @param session Session * @param commandMessage {@link CommandMessage} read from SOCKS client. * @throws SocksException If a SOCKS protocol error occurred. * @throws IOException If a I/O error occurred. */ void doConnect(Session session, CommandMessage commandMessage) throws SocksException, IOException; /** * Do BIND command. * * @param session Session. * @param commandMessage {@link CommandMessage} read from SOCKS client. * @throws SocksException If a SOCKS protocol error occurred. * @throws IOException If a I/O error occurred. */ void doBind(Session session, CommandMessage commandMessage) throws SocksException, IOException; /** * Do UDP ASSOCIATE command. * * @param session Session. * @param commandMessage {@link CommandMessage} read from SOCKS client. * @throws SocksException If a SOCKS protocol error occurred. * @throws IOException If a I/O error occurred. */ void doUDPAssociate(Session session, CommandMessage commandMessage) throws SocksException, IOException; /** * Sets session. * * @param session Session. */ void setSession(Session session); /** * Returns method selector. * * @return Method selector. */ MethodSelector getMethodSelector(); /** * Sets a method selector. * * @param methodSelector A {@link MethodSelector} instance. */ void setMethodSelector(MethodSelector methodSelector); /** * Returns buffer size. * * @return Buffer size. */ int getBufferSize(); /** * Sets buffer size. * * @param bufferSize buffer size. */ void setBufferSize(int bufferSize); /** * Returns idle time. * * @return idle time. */ int getIdleTime(); /** * Sets idle time. * * @param idleTime Idle time. */ void setIdleTime(int idleTime); void setProxy(SocksProxy socksProxy); SocksProxyServer getSocksProxyServer(); void setSocksProxyServer(SocksProxyServer socksProxyServer); }