commit 97f2dbbc341c09496c3823604cc73c5d70e42084 Author: Jakub Janco Date: Tue Dec 18 17:43:18 2018 +0100 remove NamedPipeSocket diff --git a/src/main/java/org/mariadb/jdbc/internal/io/socket/NamedPipeSocket.java b/src/main/java/org/mariadb/jdbc/internal/io/socket/NamedPipeSocket.java deleted file mode 100644 index 562bceed..00000000 --- a/src/main/java/org/mariadb/jdbc/internal/io/socket/NamedPipeSocket.java +++ /dev/null @@ -1,218 +0,0 @@ -/* - * - * MariaDB Client for Java - * - * Copyright (c) 2012-2014 Monty Program Ab. - * Copyright (c) 2015-2017 MariaDB Ab. - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by the Free - * Software Foundation; either version 2.1 of the License, or (at your option) - * any later version. - * - * This library is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License - * for more details. - * - * You should have received a copy of the GNU Lesser General Public License along - * with this library; if not, write to Monty Program Ab info@montyprogram.com. - * - * This particular MariaDB Client for Java file is work - * derived from a Drizzle-JDBC. Drizzle-JDBC file which is covered by subject to - * the following copyright and notice provisions: - * - * Copyright (c) 2009-2011, Marcus Eriksson - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, this list - * of conditions and the following disclaimer. - * - * 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. - * - * Neither the name of the driver nor the names of its contributors may not be - * used to endorse or promote products derived from this software without specific - * prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 THE COPYRIGHT HOLDER OR 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 org.mariadb.jdbc.internal.io.socket; - -import com.sun.jna.platform.win32.Kernel32; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.io.RandomAccessFile; -import java.net.Socket; -import java.net.SocketAddress; -import java.util.concurrent.TimeUnit; - -@SuppressWarnings("UnnecessaryInitCause") -public class NamedPipeSocket extends Socket { - - private final String host; - private final String name; - - private RandomAccessFile file; - private InputStream is; - private OutputStream os; - - public NamedPipeSocket(String host, String name) { - this.host = host; - this.name = name; - } - - @Override - public void close() throws IOException { - if (file != null) { - file.close(); - file = null; - } - } - - @Override - public void connect(SocketAddress endpoint) throws IOException { - connect(endpoint, 0); - } - - /** - * Name pipe connection. - * - * @param endpoint endPoint - * @param timeout timeout in milliseconds - * @throws IOException exception - */ - public void connect(SocketAddress endpoint, int timeout) throws IOException { - String filename; - if (host == null || host.equals("localhost")) { - filename = "\\\\.\\pipe\\" + name; - } else { - filename = "\\\\" + host + "\\pipe\\" + name; - } - - //use a default timeout of 100ms if no timeout set. - int usedTimeout = timeout == 0 ? 100 : timeout; - long initialNano = System.nanoTime(); - do { - try { - file = new RandomAccessFile(filename, "rw"); - break; - } catch (FileNotFoundException fileNotFoundException) { - try { - //using JNA if available - Kernel32.INSTANCE.WaitNamedPipe(filename, timeout); - //then retry connection - file = new RandomAccessFile(filename, "rw"); - } catch (Throwable cle) { - // in case JNA not on classpath, then wait 10ms before next try. - if (System.nanoTime() - initialNano > TimeUnit.MILLISECONDS.toNanos(usedTimeout)) { - if (timeout == 0) { - throw new FileNotFoundException(fileNotFoundException.getMessage() - + "\nplease consider set connectTimeout option, so connection can retry having access to named pipe. " - + "\n(Named pipe can throw ERROR_PIPE_BUSY error)"); - } - throw fileNotFoundException; - } - try { - TimeUnit.MILLISECONDS.sleep(5); - } catch (InterruptedException interrupted) { - IOException ioException = new IOException( - "Interruption during connection to named pipe"); - ioException.initCause(interrupted); - throw ioException; - } - } - } - } while (true); - - is = new InputStream() { - @Override - public int read(byte[] bytes, int off, int len) throws IOException { - return file.read(bytes, off, len); - } - - @Override - public int read() throws IOException { - return file.read(); - } - - @Override - public int read(byte[] bytes) throws IOException { - return file.read(bytes); - } - }; - - os = new OutputStream() { - @Override - public void write(byte[] bytes, int off, int len) throws IOException { - file.write(bytes, off, len); - } - - @Override - public void write(int value) throws IOException { - file.write(value); - } - - @Override - public void write(byte[] bytes) throws IOException { - file.write(bytes); - } - }; - } - - public InputStream getInputStream() { - return is; - } - - public OutputStream getOutputStream() { - return os; - } - - public void setTcpNoDelay(boolean bool) { - //do nothing - } - - public void setKeepAlive(boolean bool) { - //do nothing - } - - public void setReceiveBufferSize(int size) { - //do nothing - } - - public void setSendBufferSize(int size) { - //do nothing - } - - public void setSoLinger(boolean bool, int value) { - //do nothing - } - - @Override - public void setSoTimeout(int timeout) { - //do nothing - } - - public void shutdownInput() { - //do nothing - } - - public void shutdownOutput() { - //do nothing - } -} diff --git a/src/main/java/org/mariadb/jdbc/internal/io/socket/SocketUtility.java b/src/main/java/org/mariadb/jdbc/internal/io/socket/SocketUtility.java index 8a024af9..1b8b498d 100644 --- a/src/main/java/org/mariadb/jdbc/internal/io/socket/SocketUtility.java +++ b/src/main/java/org/mariadb/jdbc/internal/io/socket/SocketUtility.java @@ -19,9 +19,7 @@ public class SocketUtility { Platform.getOSType(); return (urlParser, host) -> { - if (urlParser.getOptions().pipe != null) { - return new NamedPipeSocket(host, urlParser.getOptions().pipe); - } else if (urlParser.getOptions().localSocket != null) { + if (urlParser.getOptions().localSocket != null) { try { return new UnixDomainSocket(urlParser.getOptions().localSocket); } catch (RuntimeException re) {