Example #1
0
        private static MyNetworkStream CreateSocketStream(MySqlConnectionStringBuilder settings, IPAddress ip, bool unix)
        {
            EndPoint endPoint;

            endPoint = new IPEndPoint(ip, (int)settings.Port);

            Socket socket = unix ?
                            new Socket(AddressFamily.Unix, SocketType.Stream, ProtocolType.IP) :
                            new Socket(ip.AddressFamily, SocketType.Stream, ProtocolType.Tcp);

            if (settings.Keepalive > 0)
            {
                SetKeepAlive(socket, settings.Keepalive);
            }

            try
            {
                socket.Connect(endPoint);
            }
            catch (Exception ex)
            {
#if !NETSTANDARD1_6
                socket.Close();
#else
                socket.Dispose();
#endif
                throw ex;
            }

            MyNetworkStream stream = new MyNetworkStream(socket, true);
            GC.SuppressFinalize(socket);
            GC.SuppressFinalize(stream);
            return(stream);
        }
Example #2
0
        public static MyNetworkStream CreateStream(MySqlConnectionStringBuilder settings, bool unix)
        {
            MyNetworkStream stream = null;

            IPAddress[] ipHE = GetHostEntry(settings.Server);
            foreach (IPAddress address in ipHE)
            {
                try
                {
                    stream = CreateSocketStream(settings, address, unix);
                    if (stream != null)
                    {
                        break;
                    }
                }
                catch (Exception ex)
                {
                    SocketException socketException = ex as SocketException;
                    // if the exception is a ConnectionRefused then we eat it as we may have other address
                    // to attempt
                    if (socketException == null)
                    {
                        throw;
                    }
                    if (socketException.SocketErrorCode != SocketError.ConnectionRefused)
                    {
                        throw;
                    }
                }
            }
            return(stream);
        }
Example #3
0
        private static Stream GetUnixSocketStream(MyCatConnectionStringBuilder settings)
        {
            if (Platform.IsWindows())
            {
                throw new InvalidOperationException(Resources.NoUnixSocketsOnWindows);
            }

            MyNetworkStream s = MyNetworkStream.CreateStream(settings, true);

            return(s);
        }
Example #4
0
        private static Stream GetTcpStream(MyCatConnectionStringBuilder settings)
        {
            MyNetworkStream s = MyNetworkStream.CreateStream(settings, false);

            return(s);
        }
        private static MyNetworkStream CreateSocketStream(MySqlConnectionStringBuilder settings, IPAddress ip, bool unix)
        {
            EndPoint endPoint;
            endPoint = new IPEndPoint(ip, (int)settings.Port);

            Socket socket = unix ?
                new Socket(AddressFamily.Unix, SocketType.Stream, ProtocolType.IP) :
                new Socket(ip.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
            if (settings.Keepalive > 0)
            {
                SetKeepAlive(socket, settings.Keepalive);
            }

            try
            {
                
                socket.Connect(endPoint);
            }
            catch (Exception ex)
            {
#if !NETSTANDARD1_6
                socket.Close();
#else
                socket.Dispose();
#endif
                throw ex;
            }
            
            MyNetworkStream stream = new MyNetworkStream(socket, true);
            GC.SuppressFinalize(socket);
            GC.SuppressFinalize(stream);
            return stream;
        }