@Test public void writeWithoutTimeout() throws Exception { Socket socket = socket(0, ONE_MB); Sink sink = Okio.buffer(Okio.sink(socket)); sink.timeout().timeout(500, TimeUnit.MILLISECONDS); byte[] data = new byte[ONE_MB]; sink.write(new Buffer().write(data), data.length); sink.flush(); socket.close(); }
@Test public void writeWithTimeout() throws Exception { Socket socket = socket(0, 0); Sink sink = Okio.sink(socket); sink.timeout().timeout(500, TimeUnit.MILLISECONDS); byte[] data = new byte[ONE_MB]; long start = System.nanoTime(); try { sink.write(new Buffer().write(data), data.length); sink.flush(); fail(); } catch (SocketTimeoutException expected) { } long elapsed = System.nanoTime() - start; socket.close(); assertTrue("elapsed: " + elapsed, TimeUnit.NANOSECONDS.toMillis(elapsed) >= 500); assertTrue("elapsed: " + elapsed, TimeUnit.NANOSECONDS.toMillis(elapsed) <= 750); }
@Test public void sinkTimeout() throws Exception { Pipe pipe = new Pipe(3); pipe.sink().timeout().timeout(1000, TimeUnit.MILLISECONDS); pipe.sink().write(new Buffer().writeUtf8("abc"), 3L); double start = now(); try { pipe.sink().write(new Buffer().writeUtf8("def"), 3L); fail(); } catch (InterruptedIOException expected) { assertEquals("timeout", expected.getMessage()); } assertElapsed(1000.0, start); Buffer readBuffer = new Buffer(); assertEquals(3L, pipe.source().read(readBuffer, 6L)); assertEquals("abc", readBuffer.readUtf8()); }
@Override public Timeout timeout() { return sink.timeout(); }
@Override public Timeout timeout() { return delegate.timeout(); }
@Override public Transport newInstance() throws TransportFactoryInitException { try { Socket socket; if (config.getUseSSL()) { if (config.getVerifySSL()) { socket = SSLSocketFactory.getDefault().createSocket(config.getHostname(), config.getPort()); } else { socket = getSSLContext().getSocketFactory().createSocket(config.getHostname(), config.getPort()); } } else { socket = new Socket(config.getHostname(), config.getPort()); } socket.setReuseAddress(true); Sink sink = Okio.sink(socket); sink.timeout().timeout(config.getTimeout(), TimeUnit.MILLISECONDS); return new TcpTransport(sink, config.getRetryCount(), config.getRetryDelay()); } catch (IOException ex) { throw new TransportFactoryInitException("Error while creating tcp transport", ex); } }
@Override public Transport newInstance() throws TransportFactoryInitException { try { Socket socket; if (config.getUseSSL()) { if (config.getVerifySSL()) { socket = SSLSocketFactory.getDefault().createSocket(config.getHostname(), config.getPort()); } else { socket = getSSLContext().getSocketFactory().createSocket(config.getHostname(), config.getPort()); } } else { socket = new Socket(config.getHostname(), config.getPort()); } socket.setReuseAddress(true); Sink sink = Okio.sink(socket); sink.timeout().timeout(config.getTimeout(), TimeUnit.MILLISECONDS); return new TcpTransport(sink, config.getRetryCount(), config.getRetryDelay()); } catch (IOException ex) { throw new TransportFactoryInitException("Error while creating tcp transport", ex); } }