/************************************************************************** * Copyright (c) 2009, 2015 by Chris Gray, KIFFER Ltd. * * All rights reserved. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * * notice, this list of conditions and the following disclaimer in the * * documentation and/or other materials provided with the distribution. * * 3. Neither the name of KIFFER Ltd nor the names of other contributors * * may be used to endorse or promote products derived from this * * software without specific prior written permission. * * * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED * * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * * IN NO EVENT SHALL KIFFER LTD OR OTHER CONTRIBUTORS BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * * POSSIBILITY OF SUCH DAMAGE. * **************************************************************************/ package java.net; import java.io.FileDescriptor; import java.io.InputStream; import java.io.OutputStream; import java.io.IOException; public abstract class SocketImpl implements SocketOptions { protected InetAddress address; protected FileDescriptor fd; protected int localport; protected int port; public SocketImpl() {} protected abstract void accept(SocketImpl s) throws IOException; protected abstract int available() throws IOException; protected abstract void bind(InetAddress host, int port) throws IOException; protected abstract void close() throws IOException; protected abstract void connect(InetAddress address, int port) throws IOException; protected abstract void connect(SocketAddress address, int timeout) throws IOException; protected abstract void connect(String host, int port) throws IOException; protected abstract void create(boolean stream) throws IOException; protected FileDescriptor getFileDescriptor() { return fd; } protected InetAddress getInetAddress() { return address; } protected abstract InputStream getInputStream() throws IOException; protected abstract OutputStream getOutputStream() throws IOException; protected int getLocalPort() { return localport; } protected int getPort() { return port; } protected abstract void listen(int backlog) throws IOException; protected abstract void sendUrgentData(int udata) throws IOException; protected boolean supportsUrgentData() { return false; } public String toString() { return address+":"+port+" on localport "+localport; } protected void shutdownInput() throws IOException { throw new IOException("shutdownInput(): unsupported Feature in "+getClass()); } protected void shutdownOutput() throws IOException { throw new IOException("shutdownOutput(): unsupported Feature in "+getClass()); } }