10f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann/******************************************************************************* 2398ee59bebad6835dab57b60157eff16d511709eMarc R. Hoffmann * Copyright (c) 2009, 2015 Mountainminds GmbH & Co. KG and Contributors 30f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann * All rights reserved. This program and the accompanying materials 40f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann * are made available under the terms of the Eclipse Public License v1.0 50f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann * which accompanies this distribution, and is available at 60f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann * http://www.eclipse.org/legal/epl-v10.html 70f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann * 80f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann * Contributors: 90f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann * Marc R. Hoffmann - initial API and implementation 100f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann * 110f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann *******************************************************************************/ 1282608019c1e03552fc80df7f70e7f7c5270a0637Marc R. Hoffmannpackage org.jacoco.agent.rt.internal.output; 130f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 140f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmannimport java.io.IOException; 150f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmannimport java.io.InputStream; 160f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmannimport java.io.InterruptedIOException; 170f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmannimport java.io.OutputStream; 180f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmannimport java.net.InetAddress; 190f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmannimport java.net.Socket; 200f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmannimport java.net.SocketAddress; 210f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmannimport java.net.SocketException; 220f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmannimport java.net.SocketImpl; 230f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmannimport java.nio.channels.SocketChannel; 240f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmannimport java.util.Queue; 250f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmannimport java.util.concurrent.ConcurrentLinkedQueue; 260f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 270f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann/** 2882608019c1e03552fc80df7f70e7f7c5270a0637Marc R. Hoffmann * Simulates two connected {@link Socket} objects. No physical connection is 2982608019c1e03552fc80df7f70e7f7c5270a0637Marc R. Hoffmann * established for this. The behavior includes the (inconsistent) exception 300f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann * messages have been derived from Sun JDK 1.5.0_18-b02. 310f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann */ 320f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmannpublic class MockSocketConnection { 330f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 340f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann private final MockSocket socketA; 350f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 360f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann private final MockSocket socketB; 370f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 380f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann public MockSocketConnection() throws SocketException { 390f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann socketA = new MockSocket(); 400f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann socketB = new MockSocket(); 410f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann socketA.connect(socketB); 420f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 430f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 440f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann public Socket getSocketA() { 450f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann return socketA; 460f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 470f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 480f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann public Socket getSocketB() { 490f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann return socketB; 500f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 510f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 520f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann private class MockSocket extends Socket { 530f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 540f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann private MockSocket other; 550f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 560f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann private boolean closed; 570f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 580f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann private final Queue<Byte> buffer = new ConcurrentLinkedQueue<Byte>(); 590f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 600f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann private final OutputStream out = new OutputStream() { 610f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 620f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann @Override 630f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann public void write(int b) throws IOException { 640f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann if (closed) { 650f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann throw new SocketException("Socket closed"); 660f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 670f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann synchronized (other.buffer) { 680f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann other.buffer.add(Byte.valueOf((byte) b)); 690f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann other.buffer.notifyAll(); 700f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 710f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 720f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann }; 730f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 740f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann private final InputStream in = new InputStream() { 750f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 760f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann @Override 770f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann public int read() throws IOException { 780f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann synchronized (buffer) { 790f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann try { 800f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann while (true) { 810f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann if (closed) { 820f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann throw new SocketException("socket closed"); 830f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 840f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann if (other.closed) { 850f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann return -1; 860f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 870f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann final Byte b = buffer.poll(); 880f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann if (b != null) { 890f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann return 0xff & b.intValue(); 900f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 910f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann buffer.wait(); 920f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 930f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } catch (InterruptedException e) { 940f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann throw new InterruptedIOException(); 950f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 960f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 970f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 980f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 990f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann @Override 1000f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann public int available() throws IOException { 1010f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann return buffer.size(); 1020f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 1030f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 1040f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann }; 1050f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 1060f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann public MockSocket() throws SocketException { 1070f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann super((SocketImpl) null); 1080f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann closed = false; 1090f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 1100f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 1110f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann void connect(MockSocket other) { 1120f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann this.other = other; 1130f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann other.other = this; 1140f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 1150f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 1160f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann // socket methods with mocking behavior: 1170f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 1180f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann @Override 1190f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann public OutputStream getOutputStream() throws IOException { 1200f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann if (closed) { 1210f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann throw new SocketException("Socket is closed"); 1220f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 1230f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann return out; 1240f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 1250f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 1260f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann @Override 1270f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann public InputStream getInputStream() throws IOException { 1280f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann if (closed) { 1290f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann throw new SocketException("Socket is closed"); 1300f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 1310f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann return in; 1320f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 1330f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 1340f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann @Override 135fd99e33be7ac88af01cd22b4cfd4b25be9663291Marc R. Hoffmann public void close() throws IOException { 1360f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann closed = true; 1370f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann synchronized (buffer) { 1380f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann buffer.notifyAll(); 1390f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 1400f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann synchronized (other.buffer) { 1410f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann other.buffer.notifyAll(); 1420f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 1430f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 1440f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 1450f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann @Override 1460f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann public boolean isClosed() { 1470f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann return closed; 1480f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 1490f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 1500f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann // unsupported socket methods: 1510f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 1520f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann @Override 1530f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann public void bind(SocketAddress bindpoint) throws IOException { 1540f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann throw new AssertionError(); 1550f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 1560f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 1570f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann @Override 1580f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann public void connect(SocketAddress endpoint, int timeout) 1590f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann throws IOException { 1600f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann throw new AssertionError(); 1610f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 1620f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 1630f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann @Override 1640f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann public void connect(SocketAddress endpoint) throws IOException { 1650f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann throw new AssertionError(); 1660f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 1670f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 1680f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann @Override 1690f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann public SocketChannel getChannel() { 1700f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann throw new AssertionError(); 1710f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 1720f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 1730f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann @Override 1740f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann public InetAddress getInetAddress() { 1750f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann throw new AssertionError(); 1760f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 1770f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 1780f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann @Override 1790f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann public boolean getKeepAlive() throws SocketException { 1800f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann throw new AssertionError(); 1810f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 1820f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 1830f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann @Override 1840f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann public InetAddress getLocalAddress() { 1850f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann throw new AssertionError(); 1860f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 1870f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 1880f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann @Override 1890f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann public int getLocalPort() { 1900f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann throw new AssertionError(); 1910f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 1920f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 1930f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann @Override 1940f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann public SocketAddress getLocalSocketAddress() { 1950f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann throw new AssertionError(); 1960f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 1970f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 1980f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann @Override 1990f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann public boolean getOOBInline() throws SocketException { 2000f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann throw new AssertionError(); 2010f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 2020f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 2030f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann @Override 2040f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann public int getPort() { 2050f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann throw new AssertionError(); 2060f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 2070f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 2080f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann @Override 2090f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann public synchronized int getReceiveBufferSize() throws SocketException { 2100f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann throw new AssertionError(); 2110f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 2120f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 2130f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann @Override 2140f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann public SocketAddress getRemoteSocketAddress() { 2150f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann throw new AssertionError(); 2160f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 2170f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 2180f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann @Override 2190f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann public boolean getReuseAddress() throws SocketException { 2200f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann throw new AssertionError(); 2210f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 2220f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 2230f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann @Override 2240f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann public synchronized int getSendBufferSize() throws SocketException { 2250f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann throw new AssertionError(); 2260f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 2270f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 2280f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann @Override 2290f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann public int getSoLinger() throws SocketException { 2300f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann throw new AssertionError(); 2310f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 2320f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 2330f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann @Override 2340f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann public synchronized int getSoTimeout() throws SocketException { 2350f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann throw new AssertionError(); 2360f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 2370f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 2380f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann @Override 2390f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann public boolean getTcpNoDelay() throws SocketException { 2400f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann throw new AssertionError(); 2410f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 2420f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 2430f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann @Override 2440f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann public int getTrafficClass() throws SocketException { 2450f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann throw new AssertionError(); 2460f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 2470f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 2480f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann @Override 2490f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann public boolean isBound() { 2500f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann throw new AssertionError(); 2510f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 2520f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 2530f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann @Override 2540f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann public boolean isConnected() { 2550f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann throw new AssertionError(); 2560f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 2570f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 2580f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann @Override 2590f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann public boolean isInputShutdown() { 2600f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann throw new AssertionError(); 2610f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 2620f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 2630f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann @Override 2640f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann public boolean isOutputShutdown() { 2650f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann throw new AssertionError(); 2660f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 2670f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 2680f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann @Override 2690f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann public void sendUrgentData(int data) throws IOException { 2700f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann throw new AssertionError(); 2710f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 2720f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 2730f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann @Override 2740f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann public void setKeepAlive(boolean on) throws SocketException { 2750f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann throw new AssertionError(); 2760f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 2770f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 2780f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann @Override 2790f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann public void setOOBInline(boolean on) throws SocketException { 2800f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann throw new AssertionError(); 2810f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 2820f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 2830f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann @Override 2840f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann public void setPerformancePreferences(int connectionTime, int latency, 2850f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann int bandwidth) { 2860f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann throw new AssertionError(); 2870f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 2880f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 2890f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann @Override 2900f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann public synchronized void setReceiveBufferSize(int size) 2910f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann throws SocketException { 2920f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann throw new AssertionError(); 2930f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 2940f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 2950f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann @Override 2960f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann public void setReuseAddress(boolean on) throws SocketException { 2970f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann throw new AssertionError(); 2980f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 2990f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 3000f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann @Override 3010f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann public synchronized void setSendBufferSize(int size) 3020f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann throws SocketException { 3030f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann throw new AssertionError(); 3040f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 3050f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 3060f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann @Override 3070f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann public void setSoLinger(boolean on, int linger) throws SocketException { 3080f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann throw new AssertionError(); 3090f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 3100f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 3110f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann @Override 3120f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann public synchronized void setSoTimeout(int timeout) 3130f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann throws SocketException { 3140f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann throw new AssertionError(); 3150f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 3160f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 3170f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann @Override 3180f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann public void setTcpNoDelay(boolean on) throws SocketException { 3190f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann throw new AssertionError(); 3200f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 3210f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 3220f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann @Override 3230f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann public void setTrafficClass(int tc) throws SocketException { 3240f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann throw new AssertionError(); 3250f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 3260f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 3270f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann @Override 3280f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann public void shutdownInput() throws IOException { 3290f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann throw new AssertionError(); 3300f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 3310f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 3320f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann @Override 3330f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann public void shutdownOutput() throws IOException { 3340f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann throw new AssertionError(); 3350f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 3360f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 3370f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann } 3380f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann 3390f1cf840fa0deb0088e0d6c0bada2d20f62e2e9fMarc R. Hoffmann} 340