final class com.microsoft.sqlserver.jdbc.SocketFinder
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: com.microsoft.sqlserver.jdbc.SocketFinder
super_class: java.lang.Object
{
private static final java.util.concurrent.ThreadPoolExecutor threadPoolExecutor;
descriptor: Ljava/util/concurrent/ThreadPoolExecutor;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final int minTimeoutForParallelConnections;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 1500
private final java.lang.Object socketFinderlock;
descriptor: Ljava/lang/Object;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.lang.Object parentThreadLock;
descriptor: Ljava/lang/Object;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private volatile com.microsoft.sqlserver.jdbc.SocketFinder$Result result;
descriptor: Lcom/microsoft/sqlserver/jdbc/SocketFinder$Result;
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
private int noOfSpawnedThreads;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private int noOfThreadsThatNotified;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private volatile java.net.Socket selectedSocket;
descriptor: Ljava/net/Socket;
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
private volatile java.io.IOException selectedException;
descriptor: Ljava/io/IOException;
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
private static final java.util.logging.Logger logger;
descriptor: Ljava/util/logging/Logger;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private final java.lang.String traceID;
descriptor: Ljava/lang/String;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private static final int ipAddressLimit;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 64
private final com.microsoft.sqlserver.jdbc.SQLServerConnection conn;
descriptor: Lcom/microsoft/sqlserver/jdbc/SQLServerConnection;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private javax.net.SocketFactory socketFactory;
descriptor: Ljavax/net/SocketFactory;
flags: (0x0002) ACC_PRIVATE
static final boolean $assertionsDisabled;
descriptor: Z
flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=9, locals=0, args_size=0
0: ldc Lcom/microsoft/sqlserver/jdbc/SocketFinder;
invokevirtual java.lang.Class.desiredAssertionStatus:()Z
ifne 1
iconst_1
goto 2
StackMap locals:
StackMap stack:
1: iconst_0
StackMap locals:
StackMap stack: int
2: putstatic com.microsoft.sqlserver.jdbc.SocketFinder.$assertionsDisabled:Z
3: new java.util.concurrent.ThreadPoolExecutor
dup
iconst_0
ldc 2147483647
ldc 5
4: getstatic java.util.concurrent.TimeUnit.SECONDS:Ljava/util/concurrent/TimeUnit;
new java.util.concurrent.SynchronousQueue
dup
invokespecial java.util.concurrent.SynchronousQueue.<init>:()V
5: invokespecial java.util.concurrent.ThreadPoolExecutor.<init>:(IIJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue;)V
putstatic com.microsoft.sqlserver.jdbc.SocketFinder.threadPoolExecutor:Ljava/util/concurrent/ThreadPoolExecutor;
6: ldc "com.microsoft.sqlserver.jdbc.internals.SocketFinder"
invokestatic java.util.logging.Logger.getLogger:(Ljava/lang/String;)Ljava/util/logging/Logger;
putstatic com.microsoft.sqlserver.jdbc.SocketFinder.logger:Ljava/util/logging/Logger;
7: return
LocalVariableTable:
Start End Slot Name Signature
void <init>(java.lang.String, com.microsoft.sqlserver.jdbc.SQLServerConnection);
descriptor: (Ljava/lang/String;Lcom/microsoft/sqlserver/jdbc/SQLServerConnection;)V
flags: (0x0000)
Code:
stack=4, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
new java.lang.Object
dup
invokespecial java.lang.Object.<init>:()V
putfield com.microsoft.sqlserver.jdbc.SocketFinder.socketFinderlock:Ljava/lang/Object;
2: aload 0
new java.lang.Object
dup
invokespecial java.lang.Object.<init>:()V
putfield com.microsoft.sqlserver.jdbc.SocketFinder.parentThreadLock:Ljava/lang/Object;
3: aload 0
getstatic com.microsoft.sqlserver.jdbc.SocketFinder$Result.UNKNOWN:Lcom/microsoft/sqlserver/jdbc/SocketFinder$Result;
putfield com.microsoft.sqlserver.jdbc.SocketFinder.result:Lcom/microsoft/sqlserver/jdbc/SocketFinder$Result;
4: aload 0
iconst_0
putfield com.microsoft.sqlserver.jdbc.SocketFinder.noOfSpawnedThreads:I
5: aload 0
iconst_0
putfield com.microsoft.sqlserver.jdbc.SocketFinder.noOfThreadsThatNotified:I
6: aload 0
aconst_null
putfield com.microsoft.sqlserver.jdbc.SocketFinder.selectedSocket:Ljava/net/Socket;
7: aload 0
aconst_null
putfield com.microsoft.sqlserver.jdbc.SocketFinder.selectedException:Ljava/io/IOException;
8: aload 0
aconst_null
putfield com.microsoft.sqlserver.jdbc.SocketFinder.socketFactory:Ljavax/net/SocketFactory;
9: aload 0
new java.lang.StringBuilder
dup
ldc "SocketFinder("
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc ")"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
putfield com.microsoft.sqlserver.jdbc.SocketFinder.traceID:Ljava/lang/String;
10: aload 0
aload 2
putfield com.microsoft.sqlserver.jdbc.SocketFinder.conn:Lcom/microsoft/sqlserver/jdbc/SQLServerConnection;
11: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lcom/microsoft/sqlserver/jdbc/SocketFinder;
0 12 1 callerTraceID Ljava/lang/String;
0 12 2 sqlServerConnection Lcom/microsoft/sqlserver/jdbc/SQLServerConnection;
MethodParameters:
Name Flags
callerTraceID
sqlServerConnection
java.net.Socket findSocket(java.lang.String, int, int, boolean, boolean, boolean, int);
descriptor: (Ljava/lang/String;IIZZZI)Ljava/net/Socket;
flags: (0x0000)
Code:
stack=4, locals=14, args_size=8
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 start local 6 start local 7 0: getstatic com.microsoft.sqlserver.jdbc.SocketFinder.$assertionsDisabled:Z
ifne 1
iload 3
ifne 1
new java.lang.AssertionError
dup
ldc "The driver does not allow a time out of 0"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
1: StackMap locals:
StackMap stack:
aconst_null
astore 8
start local 8 2: iload 4
ifne 9
3: iload 5
ifeq 6
iload 6
ifeq 6
4: aload 0
aload 1
iload 2
sipush 500
invokevirtual com.microsoft.sqlserver.jdbc.SocketFinder.getDefaultSocket:(Ljava/lang/String;II)Ljava/net/Socket;
5: areturn
6: StackMap locals: java.net.InetAddress[]
StackMap stack:
iload 5
ifne 9
7: aload 0
aload 1
iload 2
iload 3
invokevirtual com.microsoft.sqlserver.jdbc.SocketFinder.getDefaultSocket:(Ljava/lang/String;II)Ljava/net/Socket;
8: areturn
9: StackMap locals:
StackMap stack:
iload 4
ifne 10
iload 5
ifeq 14
10: StackMap locals:
StackMap stack:
aload 1
invokestatic java.net.InetAddress.getAllByName:(Ljava/lang/String;)[Ljava/net/InetAddress;
astore 8
11: iload 5
ifeq 14
aload 8
arraylength
bipush 64
if_icmple 14
12: iconst_0
istore 5
13: iload 7
istore 3
14: StackMap locals:
StackMap stack:
getstatic com.microsoft.sqlserver.jdbc.SocketFinder.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINER:Ljava/util/logging/Level;
invokevirtual java.util.logging.Logger.isLoggable:(Ljava/util/logging/Level;)Z
ifeq 25
15: new java.lang.StringBuilder
dup
aload 0
invokevirtual com.microsoft.sqlserver.jdbc.SocketFinder.toString:()Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
astore 9
start local 9 16: aload 9
ldc " Total no of InetAddresses: "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
17: aload 9
aload 8
arraylength
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
pop
18: aload 9
ldc ". They are: "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
19: aload 8
dup
astore 13
arraylength
istore 12
iconst_0
istore 11
goto 23
StackMap locals: com.microsoft.sqlserver.jdbc.SocketFinder java.lang.String int int int int int int java.net.InetAddress[] java.lang.StringBuilder top int int java.net.InetAddress[]
StackMap stack:
20: aload 13
iload 11
aaload
astore 10
start local 10 21: aload 9
aload 10
invokevirtual java.net.InetAddress.toString:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc ";"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
end local 10 22: iinc 11 1
StackMap locals:
StackMap stack:
23: iload 11
iload 12
if_icmplt 20
24: getstatic com.microsoft.sqlserver.jdbc.SocketFinder.logger:Ljava/util/logging/Logger;
aload 9
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.util.logging.Logger.finer:(Ljava/lang/String;)V
end local 9 25: StackMap locals: com.microsoft.sqlserver.jdbc.SocketFinder java.lang.String int int int int int int java.net.InetAddress[]
StackMap stack:
aload 8
arraylength
bipush 64
if_icmple 32
26: new java.text.MessageFormat
dup
27: ldc "R_ipAddressLimitWithMultiSubnetFailover"
invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.getErrString:(Ljava/lang/String;)Ljava/lang/String;
28: invokespecial java.text.MessageFormat.<init>:(Ljava/lang/String;)V
astore 9
start local 9 29: iconst_1
anewarray java.lang.Object
dup
iconst_0
bipush 64
invokestatic java.lang.Integer.toString:(I)Ljava/lang/String;
aastore
astore 10
start local 10 30: aload 9
aload 10
invokevirtual java.text.MessageFormat.format:(Ljava/lang/Object;)Ljava/lang/String;
astore 11
start local 11 31: aload 0
getfield com.microsoft.sqlserver.jdbc.SocketFinder.conn:Lcom/microsoft/sqlserver/jdbc/SQLServerConnection;
bipush 6
aload 11
invokevirtual com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate:(ILjava/lang/String;)V
end local 11 end local 10 end local 9 32: StackMap locals:
StackMap stack:
aload 8
arraylength
iconst_1
if_icmpne 35
33: aload 0
aload 8
iconst_0
aaload
iload 2
iload 3
invokevirtual com.microsoft.sqlserver.jdbc.SocketFinder.getConnectedSocket:(Ljava/net/InetAddress;II)Ljava/net/Socket;
34: areturn
35: StackMap locals:
StackMap stack:
iload 3
sipush 1500
invokestatic java.lang.Math.max:(II)I
istore 3
36: invokestatic com.microsoft.sqlserver.jdbc.Util.isIBM:()Z
ifeq 41
37: getstatic com.microsoft.sqlserver.jdbc.SocketFinder.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINER:Ljava/util/logging/Level;
invokevirtual java.util.logging.Logger.isLoggable:(Ljava/util/logging/Level;)Z
ifeq 39
38: getstatic com.microsoft.sqlserver.jdbc.SocketFinder.logger:Ljava/util/logging/Logger;
new java.lang.StringBuilder
dup
aload 0
invokevirtual com.microsoft.sqlserver.jdbc.SocketFinder.toString:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "Using Java NIO with timeout:"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
iload 3
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.util.logging.Logger.finer:(Ljava/lang/String;)V
39: StackMap locals:
StackMap stack:
aload 0
aload 8
iload 2
iload 3
invokevirtual com.microsoft.sqlserver.jdbc.SocketFinder.findSocketUsingJavaNIO:([Ljava/net/InetAddress;II)V
40: goto 44
41: StackMap locals:
StackMap stack:
getstatic com.microsoft.sqlserver.jdbc.SocketFinder.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINER:Ljava/util/logging/Level;
invokevirtual java.util.logging.Logger.isLoggable:(Ljava/util/logging/Level;)Z
ifeq 43
42: getstatic com.microsoft.sqlserver.jdbc.SocketFinder.logger:Ljava/util/logging/Logger;
new java.lang.StringBuilder
dup
aload 0
invokevirtual com.microsoft.sqlserver.jdbc.SocketFinder.toString:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "Using Threading with timeout:"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
iload 3
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.util.logging.Logger.finer:(Ljava/lang/String;)V
43: StackMap locals:
StackMap stack:
aload 0
aload 8
iload 2
iload 3
invokevirtual com.microsoft.sqlserver.jdbc.SocketFinder.findSocketUsingThreading:([Ljava/net/InetAddress;II)V
44: StackMap locals:
StackMap stack:
aload 0
getfield com.microsoft.sqlserver.jdbc.SocketFinder.result:Lcom/microsoft/sqlserver/jdbc/SocketFinder$Result;
getstatic com.microsoft.sqlserver.jdbc.SocketFinder$Result.UNKNOWN:Lcom/microsoft/sqlserver/jdbc/SocketFinder$Result;
invokevirtual com.microsoft.sqlserver.jdbc.SocketFinder$Result.equals:(Ljava/lang/Object;)Z
ifeq 54
45: aload 0
getfield com.microsoft.sqlserver.jdbc.SocketFinder.socketFinderlock:Ljava/lang/Object;
dup
astore 9
monitorenter
46: aload 0
getfield com.microsoft.sqlserver.jdbc.SocketFinder.result:Lcom/microsoft/sqlserver/jdbc/SocketFinder$Result;
getstatic com.microsoft.sqlserver.jdbc.SocketFinder$Result.UNKNOWN:Lcom/microsoft/sqlserver/jdbc/SocketFinder$Result;
invokevirtual com.microsoft.sqlserver.jdbc.SocketFinder$Result.equals:(Ljava/lang/Object;)Z
ifeq 50
47: aload 0
getstatic com.microsoft.sqlserver.jdbc.SocketFinder$Result.FAILURE:Lcom/microsoft/sqlserver/jdbc/SocketFinder$Result;
putfield com.microsoft.sqlserver.jdbc.SocketFinder.result:Lcom/microsoft/sqlserver/jdbc/SocketFinder$Result;
48: getstatic com.microsoft.sqlserver.jdbc.SocketFinder.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINER:Ljava/util/logging/Level;
invokevirtual java.util.logging.Logger.isLoggable:(Ljava/util/logging/Level;)Z
ifeq 50
49: getstatic com.microsoft.sqlserver.jdbc.SocketFinder.logger:Ljava/util/logging/Logger;
new java.lang.StringBuilder
dup
aload 0
invokevirtual com.microsoft.sqlserver.jdbc.SocketFinder.toString:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc " The parent thread updated the result to failure"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.util.logging.Logger.finer:(Ljava/lang/String;)V
50: StackMap locals: java.lang.Object
StackMap stack:
aload 9
monitorexit
51: goto 54
StackMap locals:
StackMap stack: java.lang.Throwable
52: aload 9
monitorexit
53: athrow
54: StackMap locals:
StackMap stack:
aload 0
getfield com.microsoft.sqlserver.jdbc.SocketFinder.result:Lcom/microsoft/sqlserver/jdbc/SocketFinder$Result;
getstatic com.microsoft.sqlserver.jdbc.SocketFinder$Result.FAILURE:Lcom/microsoft/sqlserver/jdbc/SocketFinder$Result;
invokevirtual com.microsoft.sqlserver.jdbc.SocketFinder$Result.equals:(Ljava/lang/Object;)Z
ifeq 71
55: aload 0
getfield com.microsoft.sqlserver.jdbc.SocketFinder.selectedException:Ljava/io/IOException;
ifnonnull 62
56: getstatic com.microsoft.sqlserver.jdbc.SocketFinder.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINER:Ljava/util/logging/Level;
invokevirtual java.util.logging.Logger.isLoggable:(Ljava/util/logging/Level;)Z
ifeq 60
57: getstatic com.microsoft.sqlserver.jdbc.SocketFinder.logger:Ljava/util/logging/Logger;
new java.lang.StringBuilder
dup
aload 0
invokevirtual com.microsoft.sqlserver.jdbc.SocketFinder.toString:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
58: ldc " There is no selectedException. The wait calls timed out before any connect call returned or timed out."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
59: invokevirtual java.util.logging.Logger.finer:(Ljava/lang/String;)V
60: StackMap locals:
StackMap stack:
ldc "R_connectionTimedOut"
invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.getErrString:(Ljava/lang/String;)Ljava/lang/String;
astore 9
start local 9 61: aload 0
new java.io.IOException
dup
aload 9
invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
putfield com.microsoft.sqlserver.jdbc.SocketFinder.selectedException:Ljava/io/IOException;
end local 9 62: StackMap locals:
StackMap stack:
aload 0
getfield com.microsoft.sqlserver.jdbc.SocketFinder.selectedException:Ljava/io/IOException;
athrow
end local 8 63: StackMap locals: com.microsoft.sqlserver.jdbc.SocketFinder java.lang.String int int int int int int
StackMap stack: java.lang.InterruptedException
astore 8
start local 8 64: invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
invokevirtual java.lang.Thread.interrupt:()V
65: aload 0
aload 0
getfield com.microsoft.sqlserver.jdbc.SocketFinder.selectedSocket:Ljava/net/Socket;
invokevirtual com.microsoft.sqlserver.jdbc.SocketFinder.close:(Ljava/net/Socket;)V
66: aload 1
iload 2
aload 0
getfield com.microsoft.sqlserver.jdbc.SocketFinder.conn:Lcom/microsoft/sqlserver/jdbc/SQLServerConnection;
aload 8
invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.ConvertConnectExceptionToSQLServerException:(Ljava/lang/String;ILcom/microsoft/sqlserver/jdbc/SQLServerConnection;Ljava/lang/Exception;)V
end local 8 67: goto 71
68: StackMap locals:
StackMap stack: java.io.IOException
astore 8
start local 8 69: aload 0
aload 0
getfield com.microsoft.sqlserver.jdbc.SocketFinder.selectedSocket:Ljava/net/Socket;
invokevirtual com.microsoft.sqlserver.jdbc.SocketFinder.close:(Ljava/net/Socket;)V
70: aload 1
iload 2
aload 0
getfield com.microsoft.sqlserver.jdbc.SocketFinder.conn:Lcom/microsoft/sqlserver/jdbc/SQLServerConnection;
aload 8
invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.ConvertConnectExceptionToSQLServerException:(Ljava/lang/String;ILcom/microsoft/sqlserver/jdbc/SQLServerConnection;Ljava/lang/Exception;)V
end local 8 71: StackMap locals:
StackMap stack:
getstatic com.microsoft.sqlserver.jdbc.SocketFinder.$assertionsDisabled:Z
ifne 72
aload 0
getfield com.microsoft.sqlserver.jdbc.SocketFinder.result:Lcom/microsoft/sqlserver/jdbc/SocketFinder$Result;
getstatic com.microsoft.sqlserver.jdbc.SocketFinder$Result.SUCCESS:Lcom/microsoft/sqlserver/jdbc/SocketFinder$Result;
invokevirtual com.microsoft.sqlserver.jdbc.SocketFinder$Result.equals:(Ljava/lang/Object;)Z
ifne 72
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
72: StackMap locals:
StackMap stack:
getstatic com.microsoft.sqlserver.jdbc.SocketFinder.$assertionsDisabled:Z
ifne 73
aload 0
getfield com.microsoft.sqlserver.jdbc.SocketFinder.selectedSocket:Ljava/net/Socket;
ifnonnull 73
new java.lang.AssertionError
dup
ldc "Bug in code. Selected Socket cannot be null here."
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
73: StackMap locals:
StackMap stack:
aload 0
getfield com.microsoft.sqlserver.jdbc.SocketFinder.selectedSocket:Ljava/net/Socket;
areturn
end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 74 0 this Lcom/microsoft/sqlserver/jdbc/SocketFinder;
0 74 1 hostName Ljava/lang/String;
0 74 2 portNumber I
0 74 3 timeoutInMilliSeconds I
0 74 4 useParallel Z
0 74 5 useTnir Z
0 74 6 isTnirFirstAttempt Z
0 74 7 timeoutInMilliSecondsForFullTimeout I
2 63 8 inetAddrs [Ljava/net/InetAddress;
16 25 9 loggingString Ljava/lang/StringBuilder;
21 22 10 inetAddr Ljava/net/InetAddress;
29 32 9 form Ljava/text/MessageFormat;
30 32 10 msgArgs [Ljava/lang/Object;
31 32 11 errorStr Ljava/lang/String;
61 62 9 message Ljava/lang/String;
64 67 8 ex Ljava/lang/InterruptedException;
69 71 8 ex Ljava/io/IOException;
Exception table:
from to target type
46 51 52 any
52 53 52 any
1 5 63 Class java.lang.InterruptedException
6 8 63 Class java.lang.InterruptedException
9 34 63 Class java.lang.InterruptedException
35 63 63 Class java.lang.InterruptedException
1 5 68 Class java.io.IOException
6 8 68 Class java.io.IOException
9 34 68 Class java.io.IOException
35 63 68 Class java.io.IOException
Exceptions:
throws com.microsoft.sqlserver.jdbc.SQLServerException
MethodParameters:
Name Flags
hostName
portNumber
timeoutInMilliSeconds
useParallel
useTnir
isTnirFirstAttempt
timeoutInMilliSecondsForFullTimeout
private void findSocketUsingJavaNIO(java.net.InetAddress[], int, int);
descriptor: ([Ljava/net/InetAddress;II)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=24, args_size=4
start local 0 start local 1 start local 2 start local 3 0: getstatic com.microsoft.sqlserver.jdbc.SocketFinder.$assertionsDisabled:Z
ifne 1
iload 3
ifne 1
new java.lang.AssertionError
dup
ldc "The timeout cannot be zero"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
1: StackMap locals:
StackMap stack:
getstatic com.microsoft.sqlserver.jdbc.SocketFinder.$assertionsDisabled:Z
ifne 2
aload 1
arraylength
ifne 2
new java.lang.AssertionError
dup
ldc "Number of inetAddresses should not be zero in this function"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
2: StackMap locals:
StackMap stack:
aconst_null
astore 4
start local 4 3: new java.util.LinkedList
dup
invokespecial java.util.LinkedList.<init>:()V
astore 5
start local 5 4: aconst_null
astore 6
start local 6 5: invokestatic java.nio.channels.Selector.open:()Ljava/nio/channels/Selector;
astore 4
6: aload 1
dup
astore 10
arraylength
istore 9
iconst_0
istore 8
goto 19
StackMap locals: com.microsoft.sqlserver.jdbc.SocketFinder java.net.InetAddress[] int int java.nio.channels.Selector java.util.LinkedList java.nio.channels.SocketChannel top int int java.net.InetAddress[]
StackMap stack:
7: aload 10
iload 8
aaload
astore 7
start local 7 8: invokestatic java.nio.channels.SocketChannel.open:()Ljava/nio/channels/SocketChannel;
astore 11
start local 11 9: aload 5
aload 11
invokevirtual java.util.LinkedList.add:(Ljava/lang/Object;)Z
pop
10: aload 11
iconst_0
invokevirtual java.nio.channels.SocketChannel.configureBlocking:(Z)Ljava/nio/channels/SelectableChannel;
pop
11: bipush 8
istore 12
start local 12 12: aload 11
aload 4
iload 12
invokevirtual java.nio.channels.SocketChannel.register:(Ljava/nio/channels/Selector;I)Ljava/nio/channels/SelectionKey;
pop
13: aload 11
new java.net.InetSocketAddress
dup
aload 7
iload 2
invokespecial java.net.InetSocketAddress.<init>:(Ljava/net/InetAddress;I)V
invokevirtual java.nio.channels.SocketChannel.connect:(Ljava/net/SocketAddress;)Z
pop
14: getstatic com.microsoft.sqlserver.jdbc.SocketFinder.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINER:Ljava/util/logging/Level;
invokevirtual java.util.logging.Logger.isLoggable:(Ljava/util/logging/Level;)Z
ifeq 18
15: getstatic com.microsoft.sqlserver.jdbc.SocketFinder.logger:Ljava/util/logging/Logger;
new java.lang.StringBuilder
dup
aload 0
invokevirtual com.microsoft.sqlserver.jdbc.SocketFinder.toString:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc " initiated connection to address: "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 7
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc ", portNumber: "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
16: iload 2
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
17: invokevirtual java.util.logging.Logger.finer:(Ljava/lang/String;)V
end local 12 end local 11 end local 7 18: StackMap locals:
StackMap stack:
iinc 8 1
StackMap locals:
StackMap stack:
19: iload 8
iload 9
if_icmplt 7
20: invokestatic java.lang.System.currentTimeMillis:()J
lstore 7
start local 7 21: lload 7
iload 3
i2l
ladd
lstore 9
start local 9 22: aload 1
arraylength
istore 11
start local 11 23: StackMap locals: com.microsoft.sqlserver.jdbc.SocketFinder java.net.InetAddress[] int int java.nio.channels.Selector java.util.LinkedList java.nio.channels.SocketChannel long long int
StackMap stack:
lload 9
lload 7
lsub
lstore 12
start local 12 24: lload 12
lconst_0
lcmp
ifle 68
aload 6
ifnonnull 68
iload 11
ifgt 26
25: goto 68
26: StackMap locals: long
StackMap stack:
aload 4
lload 12
invokevirtual java.nio.channels.Selector.select:(J)I
istore 14
start local 14 27: getstatic com.microsoft.sqlserver.jdbc.SocketFinder.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINER:Ljava/util/logging/Level;
invokevirtual java.util.logging.Logger.isLoggable:(Ljava/util/logging/Level;)Z
ifeq 29
28: getstatic com.microsoft.sqlserver.jdbc.SocketFinder.logger:Ljava/util/logging/Logger;
new java.lang.StringBuilder
dup
aload 0
invokevirtual com.microsoft.sqlserver.jdbc.SocketFinder.toString:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc " no of channels ready: "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
iload 14
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.util.logging.Logger.finer:(Ljava/lang/String;)V
29: StackMap locals: int
StackMap stack:
iload 14
ifeq 55
30: aload 4
invokevirtual java.nio.channels.Selector.selectedKeys:()Ljava/util/Set;
astore 15
start local 15 31: aload 15
invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
astore 16
start local 16 32: goto 54
33: StackMap locals: java.util.Set java.util.Iterator
StackMap stack:
aload 16
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.nio.channels.SelectionKey
astore 17
start local 17 34: aload 17
invokevirtual java.nio.channels.SelectionKey.channel:()Ljava/nio/channels/SelectableChannel;
checkcast java.nio.channels.SocketChannel
astore 18
start local 18 35: getstatic com.microsoft.sqlserver.jdbc.SocketFinder.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINER:Ljava/util/logging/Level;
invokevirtual java.util.logging.Logger.isLoggable:(Ljava/util/logging/Level;)Z
ifeq 37
36: getstatic com.microsoft.sqlserver.jdbc.SocketFinder.logger:Ljava/util/logging/Logger;
new java.lang.StringBuilder
dup
aload 0
invokevirtual com.microsoft.sqlserver.jdbc.SocketFinder.toString:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc " processing the channel :"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 18
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.util.logging.Logger.finer:(Ljava/lang/String;)V
37: StackMap locals: java.nio.channels.SelectionKey java.nio.channels.SocketChannel
StackMap stack:
iconst_0
istore 19
start local 19 38: aload 18
invokevirtual java.nio.channels.SocketChannel.finishConnect:()Z
istore 19
39: getstatic com.microsoft.sqlserver.jdbc.SocketFinder.$assertionsDisabled:Z
ifne 40
iload 19
ifne 40
new java.lang.AssertionError
dup
new java.lang.StringBuilder
dup
ldc "finishConnect on channel:"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 18
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc " cannot be false"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
40: StackMap locals: int
StackMap stack:
aload 18
astore 6
41: getstatic com.microsoft.sqlserver.jdbc.SocketFinder.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINER:Ljava/util/logging/Level;
invokevirtual java.util.logging.Logger.isLoggable:(Ljava/util/logging/Level;)Z
ifeq 55
42: getstatic com.microsoft.sqlserver.jdbc.SocketFinder.logger:Ljava/util/logging/Logger;
new java.lang.StringBuilder
dup
aload 0
invokevirtual com.microsoft.sqlserver.jdbc.SocketFinder.toString:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc " selected the channel :"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 6
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.util.logging.Logger.finer:(Ljava/lang/String;)V
43: goto 55
44: StackMap locals:
StackMap stack: java.io.IOException
astore 20
start local 20 45: getstatic com.microsoft.sqlserver.jdbc.SocketFinder.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINER:Ljava/util/logging/Level;
invokevirtual java.util.logging.Logger.isLoggable:(Ljava/util/logging/Level;)Z
ifeq 49
46: getstatic com.microsoft.sqlserver.jdbc.SocketFinder.logger:Ljava/util/logging/Logger;
new java.lang.StringBuilder
dup
aload 0
invokevirtual com.microsoft.sqlserver.jdbc.SocketFinder.toString:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc " the exception: "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 20
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc " with message: "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
47: aload 20
invokevirtual java.io.IOException.getMessage:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc " occurred while processing the channel: "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 18
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
48: invokevirtual java.util.logging.Logger.finer:(Ljava/lang/String;)V
49: StackMap locals: java.io.IOException
StackMap stack:
aload 0
aload 20
aload 0
invokevirtual com.microsoft.sqlserver.jdbc.SocketFinder.toString:()Ljava/lang/String;
invokevirtual com.microsoft.sqlserver.jdbc.SocketFinder.updateSelectedException:(Ljava/io/IOException;Ljava/lang/String;)V
50: aload 18
invokevirtual java.nio.channels.SocketChannel.close:()V
end local 20 51: aload 17
invokevirtual java.nio.channels.SelectionKey.cancel:()V
52: aload 16
invokeinterface java.util.Iterator.remove:()V
53: iinc 11 -1
end local 19 end local 18 end local 17 54: StackMap locals: com.microsoft.sqlserver.jdbc.SocketFinder java.net.InetAddress[] int int java.nio.channels.Selector java.util.LinkedList java.nio.channels.SocketChannel long long int long int java.util.Set java.util.Iterator
StackMap stack:
aload 16
invokeinterface java.util.Iterator.hasNext:()Z
ifne 33
end local 16 end local 15 55: StackMap locals:
StackMap stack:
invokestatic java.lang.System.currentTimeMillis:()J
lstore 7
end local 14 end local 12 56: goto 23
end local 11 end local 9 end local 7 57: StackMap locals: com.microsoft.sqlserver.jdbc.SocketFinder java.net.InetAddress[] int int java.nio.channels.Selector java.util.LinkedList java.nio.channels.SocketChannel
StackMap stack: java.io.IOException
astore 7
start local 7 58: aload 0
aload 6
invokevirtual com.microsoft.sqlserver.jdbc.SocketFinder.close:(Ljava/nio/channels/SocketChannel;)V
59: aload 7
athrow
end local 7 60: StackMap locals:
StackMap stack: java.lang.Throwable
astore 21
61: aload 0
aload 4
invokevirtual com.microsoft.sqlserver.jdbc.SocketFinder.close:(Ljava/nio/channels/Selector;)V
62: aload 5
invokevirtual java.util.LinkedList.iterator:()Ljava/util/Iterator;
astore 23
goto 66
StackMap locals: com.microsoft.sqlserver.jdbc.SocketFinder java.net.InetAddress[] int int java.nio.channels.Selector java.util.LinkedList java.nio.channels.SocketChannel top top top top top top top top top top top top top top java.lang.Throwable top java.util.Iterator
StackMap stack:
63: aload 23
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.nio.channels.SocketChannel
astore 22
start local 22 64: aload 22
aload 6
if_acmpeq 66
65: aload 0
aload 22
invokevirtual com.microsoft.sqlserver.jdbc.SocketFinder.close:(Ljava/nio/channels/SocketChannel;)V
end local 22 66: StackMap locals:
StackMap stack:
aload 23
invokeinterface java.util.Iterator.hasNext:()Z
ifne 63
67: aload 21
athrow
68: StackMap locals: com.microsoft.sqlserver.jdbc.SocketFinder java.net.InetAddress[] int int java.nio.channels.Selector java.util.LinkedList java.nio.channels.SocketChannel
StackMap stack:
aload 0
aload 4
invokevirtual com.microsoft.sqlserver.jdbc.SocketFinder.close:(Ljava/nio/channels/Selector;)V
69: aload 5
invokevirtual java.util.LinkedList.iterator:()Ljava/util/Iterator;
astore 23
goto 73
StackMap locals: com.microsoft.sqlserver.jdbc.SocketFinder java.net.InetAddress[] int int java.nio.channels.Selector java.util.LinkedList java.nio.channels.SocketChannel top top top top top top top top top top top top top top top top java.util.Iterator
StackMap stack:
70: aload 23
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.nio.channels.SocketChannel
astore 22
start local 22 71: aload 22
aload 6
if_acmpeq 73
72: aload 0
aload 22
invokevirtual com.microsoft.sqlserver.jdbc.SocketFinder.close:(Ljava/nio/channels/SocketChannel;)V
end local 22 73: StackMap locals:
StackMap stack:
aload 23
invokeinterface java.util.Iterator.hasNext:()Z
ifne 70
74: aload 6
ifnull 78
75: aload 6
iconst_1
invokevirtual java.nio.channels.SocketChannel.configureBlocking:(Z)Ljava/nio/channels/SelectableChannel;
pop
76: aload 0
aload 6
invokevirtual java.nio.channels.SocketChannel.socket:()Ljava/net/Socket;
putfield com.microsoft.sqlserver.jdbc.SocketFinder.selectedSocket:Ljava/net/Socket;
77: aload 0
getstatic com.microsoft.sqlserver.jdbc.SocketFinder$Result.SUCCESS:Lcom/microsoft/sqlserver/jdbc/SocketFinder$Result;
putfield com.microsoft.sqlserver.jdbc.SocketFinder.result:Lcom/microsoft/sqlserver/jdbc/SocketFinder$Result;
78: StackMap locals: com.microsoft.sqlserver.jdbc.SocketFinder java.net.InetAddress[] int int java.nio.channels.Selector java.util.LinkedList java.nio.channels.SocketChannel
StackMap stack:
return
end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 79 0 this Lcom/microsoft/sqlserver/jdbc/SocketFinder;
0 79 1 inetAddrs [Ljava/net/InetAddress;
0 79 2 portNumber I
0 79 3 timeoutInMilliSeconds I
3 79 4 selector Ljava/nio/channels/Selector;
4 79 5 socketChannels Ljava/util/LinkedList<Ljava/nio/channels/SocketChannel;>;
5 79 6 selectedChannel Ljava/nio/channels/SocketChannel;
8 18 7 inetAddr Ljava/net/InetAddress;
9 18 11 sChannel Ljava/nio/channels/SocketChannel;
12 18 12 ops I
21 57 7 timerNow J
22 57 9 timerExpire J
23 57 11 noOfOutstandingChannels I
24 56 12 timeRemaining J
27 56 14 readyChannels I
31 55 15 selectedKeys Ljava/util/Set<Ljava/nio/channels/SelectionKey;>;
32 55 16 keyIterator Ljava/util/Iterator<Ljava/nio/channels/SelectionKey;>;
34 54 17 key Ljava/nio/channels/SelectionKey;
35 54 18 ch Ljava/nio/channels/SocketChannel;
38 54 19 connected Z
45 51 20 ex Ljava/io/IOException;
58 60 7 ex Ljava/io/IOException;
64 66 22 s Ljava/nio/channels/SocketChannel;
71 73 22 s Ljava/nio/channels/SocketChannel;
Exception table:
from to target type
38 43 44 Class java.io.IOException
5 57 57 Class java.io.IOException
5 60 60 any
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
inetAddrs
portNumber
timeoutInMilliSeconds
private javax.net.SocketFactory getSocketFactory();
descriptor: ()Ljavax/net/SocketFactory;
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=4, args_size=1
start local 0 0: aload 0
getfield com.microsoft.sqlserver.jdbc.SocketFinder.socketFactory:Ljavax/net/SocketFactory;
ifnonnull 15
1: aload 0
getfield com.microsoft.sqlserver.jdbc.SocketFinder.conn:Lcom/microsoft/sqlserver/jdbc/SQLServerConnection;
invokevirtual com.microsoft.sqlserver.jdbc.SQLServerConnection.getSocketFactoryClass:()Ljava/lang/String;
astore 1
start local 1 2: aload 1
ifnonnull 5
3: aload 0
invokestatic javax.net.SocketFactory.getDefault:()Ljavax/net/SocketFactory;
putfield com.microsoft.sqlserver.jdbc.SocketFinder.socketFactory:Ljavax/net/SocketFactory;
4: goto 15
5: StackMap locals: java.lang.String
StackMap stack:
aload 0
getfield com.microsoft.sqlserver.jdbc.SocketFinder.conn:Lcom/microsoft/sqlserver/jdbc/SQLServerConnection;
invokevirtual com.microsoft.sqlserver.jdbc.SQLServerConnection.getSocketFactoryConstructorArg:()Ljava/lang/String;
astore 2
start local 2 6: iconst_2
anewarray java.lang.Object
dup
iconst_0
ldc "socketFactoryClass"
aastore
dup
iconst_1
ldc "javax.net.SocketFactory"
aastore
astore 3
start local 3 7: aload 0
ldc Ljavax/net/SocketFactory;
aload 1
8: aload 2
aload 3
9: invokestatic com.microsoft.sqlserver.jdbc.Util.newInstance:(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/Object;
checkcast javax.net.SocketFactory
putfield com.microsoft.sqlserver.jdbc.SocketFinder.socketFactory:Ljavax/net/SocketFactory;
end local 3 10: goto 15
StackMap locals: com.microsoft.sqlserver.jdbc.SocketFinder java.lang.String java.lang.String
StackMap stack: java.lang.RuntimeException
11: astore 3
start local 3 12: aload 3
athrow
end local 3 13: StackMap locals:
StackMap stack: java.lang.Exception
astore 3
start local 3 14: new java.io.IOException
dup
aload 3
invokespecial java.io.IOException.<init>:(Ljava/lang/Throwable;)V
athrow
end local 3 end local 2 end local 1 15: StackMap locals:
StackMap stack:
aload 0
getfield com.microsoft.sqlserver.jdbc.SocketFinder.socketFactory:Ljavax/net/SocketFactory;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Lcom/microsoft/sqlserver/jdbc/SocketFinder;
2 15 1 socketFactoryClass Ljava/lang/String;
6 15 2 socketFactoryConstructorArg Ljava/lang/String;
7 10 3 msgArgs [Ljava/lang/Object;
12 13 3 e Ljava/lang/RuntimeException;
14 15 3 e Ljava/lang/Exception;
Exception table:
from to target type
6 10 11 Class java.lang.RuntimeException
6 10 13 Class java.lang.Exception
Exceptions:
throws java.io.IOException
private java.net.Socket getDefaultSocket(java.lang.String, int, int);
descriptor: (Ljava/lang/String;II)Ljava/net/Socket;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=6, args_size=4
start local 0 start local 1 start local 2 start local 3 0: new java.net.InetSocketAddress
dup
aload 1
iload 2
invokespecial java.net.InetSocketAddress.<init>:(Ljava/lang/String;I)V
astore 4
start local 4 1: aload 4
invokevirtual java.net.InetSocketAddress.isUnresolved:()Z
ifeq 10
2: getstatic com.microsoft.sqlserver.jdbc.SocketFinder.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINER:Ljava/util/logging/Level;
invokevirtual java.util.logging.Logger.isLoggable:(Ljava/util/logging/Level;)Z
ifeq 6
3: getstatic com.microsoft.sqlserver.jdbc.SocketFinder.logger:Ljava/util/logging/Logger;
new java.lang.StringBuilder
dup
aload 0
invokevirtual com.microsoft.sqlserver.jdbc.SocketFinder.toString:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "Failed to resolve host name: "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
4: ldc ". Using IP address from DNS cache."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
5: invokevirtual java.util.logging.Logger.finer:(Ljava/lang/String;)V
6: StackMap locals: java.net.InetSocketAddress
StackMap stack:
aload 1
invokestatic com.microsoft.sqlserver.jdbc.SQLServerConnection.getDNSEntry:(Ljava/lang/String;)Ljava/net/InetSocketAddress;
astore 5
start local 5 7: aload 5
ifnull 8
aload 5
goto 9
StackMap locals: java.net.InetSocketAddress
StackMap stack:
8: aload 4
StackMap locals:
StackMap stack: java.net.InetSocketAddress
9: astore 4
end local 5 10: StackMap locals:
StackMap stack:
aload 0
aload 4
iload 3
invokevirtual com.microsoft.sqlserver.jdbc.SocketFinder.getConnectedSocket:(Ljava/net/InetSocketAddress;I)Ljava/net/Socket;
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lcom/microsoft/sqlserver/jdbc/SocketFinder;
0 11 1 hostName Ljava/lang/String;
0 11 2 portNumber I
0 11 3 timeoutInMilliSeconds I
1 11 4 addr Ljava/net/InetSocketAddress;
7 10 5 cacheEntry Ljava/net/InetSocketAddress;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
hostName
portNumber
timeoutInMilliSeconds
private java.net.Socket getConnectedSocket(java.net.InetAddress, int, int);
descriptor: (Ljava/net/InetAddress;II)Ljava/net/Socket;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=5, args_size=4
start local 0 start local 1 start local 2 start local 3 0: new java.net.InetSocketAddress
dup
aload 1
iload 2
invokespecial java.net.InetSocketAddress.<init>:(Ljava/net/InetAddress;I)V
astore 4
start local 4 1: aload 0
aload 4
iload 3
invokevirtual com.microsoft.sqlserver.jdbc.SocketFinder.getConnectedSocket:(Ljava/net/InetSocketAddress;I)Ljava/net/Socket;
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/microsoft/sqlserver/jdbc/SocketFinder;
0 2 1 inetAddr Ljava/net/InetAddress;
0 2 2 portNumber I
0 2 3 timeoutInMilliSeconds I
1 2 4 addr Ljava/net/InetSocketAddress;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
inetAddr
portNumber
timeoutInMilliSeconds
private java.net.Socket getConnectedSocket(java.net.InetSocketAddress, int);
descriptor: (Ljava/net/InetSocketAddress;I)Ljava/net/Socket;
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: getstatic com.microsoft.sqlserver.jdbc.SocketFinder.$assertionsDisabled:Z
ifne 1
iload 2
ifne 1
new java.lang.AssertionError
dup
ldc "timeout cannot be zero"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
1: StackMap locals:
StackMap stack:
aload 1
invokevirtual java.net.InetSocketAddress.isUnresolved:()Z
ifeq 3
2: new java.net.UnknownHostException
dup
invokespecial java.net.UnknownHostException.<init>:()V
athrow
3: StackMap locals:
StackMap stack:
aload 0
aload 0
invokevirtual com.microsoft.sqlserver.jdbc.SocketFinder.getSocketFactory:()Ljavax/net/SocketFactory;
invokevirtual javax.net.SocketFactory.createSocket:()Ljava/net/Socket;
putfield com.microsoft.sqlserver.jdbc.SocketFinder.selectedSocket:Ljava/net/Socket;
4: aload 0
getfield com.microsoft.sqlserver.jdbc.SocketFinder.selectedSocket:Ljava/net/Socket;
invokevirtual java.net.Socket.isConnected:()Z
ifne 6
5: aload 0
getfield com.microsoft.sqlserver.jdbc.SocketFinder.selectedSocket:Ljava/net/Socket;
aload 1
iload 2
invokevirtual java.net.Socket.connect:(Ljava/net/SocketAddress;I)V
6: StackMap locals:
StackMap stack:
aload 0
getfield com.microsoft.sqlserver.jdbc.SocketFinder.selectedSocket:Ljava/net/Socket;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lcom/microsoft/sqlserver/jdbc/SocketFinder;
0 7 1 addr Ljava/net/InetSocketAddress;
0 7 2 timeoutInMilliSeconds I
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
addr
timeoutInMilliSeconds
private void findSocketUsingThreading(java.net.InetAddress[], int, int);
descriptor: ([Ljava/net/InetAddress;II)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=16, args_size=4
start local 0 start local 1 start local 2 start local 3 0: getstatic com.microsoft.sqlserver.jdbc.SocketFinder.$assertionsDisabled:Z
ifne 1
iload 3
ifne 1
new java.lang.AssertionError
dup
ldc "The timeout cannot be zero"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
1: StackMap locals:
StackMap stack:
getstatic com.microsoft.sqlserver.jdbc.SocketFinder.$assertionsDisabled:Z
ifne 2
aload 1
arraylength
ifne 2
new java.lang.AssertionError
dup
ldc "Number of inetAddresses should not be zero in this function"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
2: StackMap locals:
StackMap stack:
new java.util.LinkedList
dup
invokespecial java.util.LinkedList.<init>:()V
astore 4
start local 4 3: new java.util.LinkedList
dup
invokespecial java.util.LinkedList.<init>:()V
astore 5
start local 5 4: aload 0
aload 1
arraylength
putfield com.microsoft.sqlserver.jdbc.SocketFinder.noOfSpawnedThreads:I
5: aload 1
dup
astore 9
arraylength
istore 8
iconst_0
istore 7
goto 15
StackMap locals: com.microsoft.sqlserver.jdbc.SocketFinder java.net.InetAddress[] int int java.util.LinkedList java.util.LinkedList top int int java.net.InetAddress[]
StackMap stack:
6: aload 9
iload 7
aaload
astore 6
start local 6 7: aload 0
invokevirtual com.microsoft.sqlserver.jdbc.SocketFinder.getSocketFactory:()Ljavax/net/SocketFactory;
invokevirtual javax.net.SocketFactory.createSocket:()Ljava/net/Socket;
astore 10
start local 10 8: aload 4
aload 10
invokevirtual java.util.LinkedList.add:(Ljava/lang/Object;)Z
pop
9: new java.net.InetSocketAddress
dup
aload 6
iload 2
invokespecial java.net.InetSocketAddress.<init>:(Ljava/net/InetAddress;I)V
astore 11
start local 11 10: new com.microsoft.sqlserver.jdbc.SocketConnector
dup
aload 10
aload 11
iload 3
11: aload 0
12: invokespecial com.microsoft.sqlserver.jdbc.SocketConnector.<init>:(Ljava/net/Socket;Ljava/net/InetSocketAddress;ILcom/microsoft/sqlserver/jdbc/SocketFinder;)V
astore 12
start local 12 13: aload 5
aload 12
invokevirtual java.util.LinkedList.add:(Ljava/lang/Object;)Z
pop
end local 12 end local 11 end local 10 end local 6 14: iinc 7 1
StackMap locals:
StackMap stack:
15: iload 7
iload 8
if_icmplt 6
16: aload 0
getfield com.microsoft.sqlserver.jdbc.SocketFinder.parentThreadLock:Ljava/lang/Object;
dup
astore 6
monitorenter
17: aload 5
invokevirtual java.util.LinkedList.iterator:()Ljava/util/Iterator;
astore 8
goto 20
StackMap locals: com.microsoft.sqlserver.jdbc.SocketFinder java.net.InetAddress[] int int java.util.LinkedList java.util.LinkedList java.lang.Object top java.util.Iterator
StackMap stack:
18: aload 8
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast com.microsoft.sqlserver.jdbc.SocketConnector
astore 7
start local 7 19: getstatic com.microsoft.sqlserver.jdbc.SocketFinder.threadPoolExecutor:Ljava/util/concurrent/ThreadPoolExecutor;
aload 7
invokevirtual java.util.concurrent.ThreadPoolExecutor.execute:(Ljava/lang/Runnable;)V
end local 7 20: StackMap locals:
StackMap stack:
aload 8
invokeinterface java.util.Iterator.hasNext:()Z
ifne 18
21: invokestatic java.lang.System.currentTimeMillis:()J
lstore 7
start local 7 22: lload 7
iload 3
i2l
ladd
lstore 9
start local 9 23: StackMap locals: com.microsoft.sqlserver.jdbc.SocketFinder java.net.InetAddress[] int int java.util.LinkedList java.util.LinkedList java.lang.Object long long
StackMap stack:
lload 9
lload 7
lsub
lstore 11
start local 11 24: getstatic com.microsoft.sqlserver.jdbc.SocketFinder.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINER:Ljava/util/logging/Level;
invokevirtual java.util.logging.Logger.isLoggable:(Ljava/util/logging/Level;)Z
ifeq 29
25: getstatic com.microsoft.sqlserver.jdbc.SocketFinder.logger:Ljava/util/logging/Logger;
new java.lang.StringBuilder
dup
aload 0
invokevirtual com.microsoft.sqlserver.jdbc.SocketFinder.toString:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc " TimeRemaining:"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
lload 11
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
ldc "; Result:"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield com.microsoft.sqlserver.jdbc.SocketFinder.result:Lcom/microsoft/sqlserver/jdbc/SocketFinder$Result;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
26: ldc "; Max. open thread count: "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
getstatic com.microsoft.sqlserver.jdbc.SocketFinder.threadPoolExecutor:Ljava/util/concurrent/ThreadPoolExecutor;
invokevirtual java.util.concurrent.ThreadPoolExecutor.getLargestPoolSize:()I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
27: ldc "; Current open thread count:"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
getstatic com.microsoft.sqlserver.jdbc.SocketFinder.threadPoolExecutor:Ljava/util/concurrent/ThreadPoolExecutor;
invokevirtual java.util.concurrent.ThreadPoolExecutor.getActiveCount:()I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
28: invokevirtual java.util.logging.Logger.finer:(Ljava/lang/String;)V
29: StackMap locals: long
StackMap stack:
lload 11
lconst_0
lcmp
ifle 36
aload 0
getfield com.microsoft.sqlserver.jdbc.SocketFinder.result:Lcom/microsoft/sqlserver/jdbc/SocketFinder$Result;
getstatic com.microsoft.sqlserver.jdbc.SocketFinder$Result.UNKNOWN:Lcom/microsoft/sqlserver/jdbc/SocketFinder$Result;
invokevirtual com.microsoft.sqlserver.jdbc.SocketFinder$Result.equals:(Ljava/lang/Object;)Z
ifne 31
30: goto 36
31: StackMap locals:
StackMap stack:
aload 0
getfield com.microsoft.sqlserver.jdbc.SocketFinder.parentThreadLock:Ljava/lang/Object;
lload 11
invokevirtual java.lang.Object.wait:(J)V
32: getstatic com.microsoft.sqlserver.jdbc.SocketFinder.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINER:Ljava/util/logging/Level;
invokevirtual java.util.logging.Logger.isLoggable:(Ljava/util/logging/Level;)Z
ifeq 34
33: getstatic com.microsoft.sqlserver.jdbc.SocketFinder.logger:Ljava/util/logging/Logger;
new java.lang.StringBuilder
dup
aload 0
invokevirtual com.microsoft.sqlserver.jdbc.SocketFinder.toString:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc " The parent thread wokeup."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.util.logging.Logger.finer:(Ljava/lang/String;)V
34: StackMap locals:
StackMap stack:
invokestatic java.lang.System.currentTimeMillis:()J
lstore 7
end local 11 35: goto 23
end local 9 end local 7 36: StackMap locals:
StackMap stack:
aload 6
monitorexit
37: goto 47
StackMap locals:
StackMap stack: java.lang.Throwable
38: aload 6
monitorexit
39: athrow
40: StackMap locals: com.microsoft.sqlserver.jdbc.SocketFinder java.net.InetAddress[] int int java.util.LinkedList java.util.LinkedList
StackMap stack: java.lang.Throwable
astore 13
41: aload 4
invokevirtual java.util.LinkedList.iterator:()Ljava/util/Iterator;
astore 15
goto 45
StackMap locals: com.microsoft.sqlserver.jdbc.SocketFinder java.net.InetAddress[] int int java.util.LinkedList java.util.LinkedList top top top top top top top java.lang.Throwable top java.util.Iterator
StackMap stack:
42: aload 15
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.net.Socket
astore 14
start local 14 43: aload 14
aload 0
getfield com.microsoft.sqlserver.jdbc.SocketFinder.selectedSocket:Ljava/net/Socket;
if_acmpeq 45
44: aload 0
aload 14
invokevirtual com.microsoft.sqlserver.jdbc.SocketFinder.close:(Ljava/net/Socket;)V
end local 14 45: StackMap locals:
StackMap stack:
aload 15
invokeinterface java.util.Iterator.hasNext:()Z
ifne 42
46: aload 13
athrow
47: StackMap locals: com.microsoft.sqlserver.jdbc.SocketFinder java.net.InetAddress[] int int java.util.LinkedList java.util.LinkedList
StackMap stack:
aload 4
invokevirtual java.util.LinkedList.iterator:()Ljava/util/Iterator;
astore 15
goto 51
StackMap locals: com.microsoft.sqlserver.jdbc.SocketFinder java.net.InetAddress[] int int java.util.LinkedList java.util.LinkedList top top top top top top top top top java.util.Iterator
StackMap stack:
48: aload 15
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.net.Socket
astore 14
start local 14 49: aload 14
aload 0
getfield com.microsoft.sqlserver.jdbc.SocketFinder.selectedSocket:Ljava/net/Socket;
if_acmpeq 51
50: aload 0
aload 14
invokevirtual com.microsoft.sqlserver.jdbc.SocketFinder.close:(Ljava/net/Socket;)V
end local 14 51: StackMap locals:
StackMap stack:
aload 15
invokeinterface java.util.Iterator.hasNext:()Z
ifne 48
52: aload 0
getfield com.microsoft.sqlserver.jdbc.SocketFinder.selectedSocket:Ljava/net/Socket;
ifnull 54
53: aload 0
getstatic com.microsoft.sqlserver.jdbc.SocketFinder$Result.SUCCESS:Lcom/microsoft/sqlserver/jdbc/SocketFinder$Result;
putfield com.microsoft.sqlserver.jdbc.SocketFinder.result:Lcom/microsoft/sqlserver/jdbc/SocketFinder$Result;
54: StackMap locals: com.microsoft.sqlserver.jdbc.SocketFinder java.net.InetAddress[] int int java.util.LinkedList java.util.LinkedList
StackMap stack:
return
end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 55 0 this Lcom/microsoft/sqlserver/jdbc/SocketFinder;
0 55 1 inetAddrs [Ljava/net/InetAddress;
0 55 2 portNumber I
0 55 3 timeoutInMilliSeconds I
3 55 4 sockets Ljava/util/LinkedList<Ljava/net/Socket;>;
4 55 5 socketConnectors Ljava/util/LinkedList<Lcom/microsoft/sqlserver/jdbc/SocketConnector;>;
7 14 6 inetAddress Ljava/net/InetAddress;
8 14 10 s Ljava/net/Socket;
10 14 11 inetSocketAddress Ljava/net/InetSocketAddress;
13 14 12 socketConnector Lcom/microsoft/sqlserver/jdbc/SocketConnector;
19 20 7 sc Lcom/microsoft/sqlserver/jdbc/SocketConnector;
22 36 7 timerNow J
23 36 9 timerExpire J
24 35 11 timeRemaining J
43 45 14 s Ljava/net/Socket;
49 51 14 s Ljava/net/Socket;
Exception table:
from to target type
17 37 38 any
38 39 38 any
4 40 40 any
Exceptions:
throws java.io.IOException, java.lang.InterruptedException
MethodParameters:
Name Flags
inetAddrs
portNumber
timeoutInMilliSeconds
com.microsoft.sqlserver.jdbc.SocketFinder$Result getResult();
descriptor: ()Lcom/microsoft/sqlserver/jdbc/SocketFinder$Result;
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield com.microsoft.sqlserver.jdbc.SocketFinder.result:Lcom/microsoft/sqlserver/jdbc/SocketFinder$Result;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/microsoft/sqlserver/jdbc/SocketFinder;
void close(java.nio.channels.Selector);
descriptor: (Ljava/nio/channels/Selector;)V
flags: (0x0000)
Code:
stack=5, locals=3, args_size=2
start local 0 start local 1 0: aload 1
ifnull 8
1: getstatic com.microsoft.sqlserver.jdbc.SocketFinder.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINER:Ljava/util/logging/Level;
invokevirtual java.util.logging.Logger.isLoggable:(Ljava/util/logging/Level;)Z
ifeq 3
2: getstatic com.microsoft.sqlserver.jdbc.SocketFinder.logger:Ljava/util/logging/Logger;
new java.lang.StringBuilder
dup
aload 0
invokevirtual com.microsoft.sqlserver.jdbc.SocketFinder.toString:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc ": Closing Selector"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.util.logging.Logger.finer:(Ljava/lang/String;)V
3: StackMap locals:
StackMap stack:
aload 1
invokevirtual java.nio.channels.Selector.close:()V
4: goto 8
StackMap locals:
StackMap stack: java.io.IOException
5: astore 2
start local 2 6: getstatic com.microsoft.sqlserver.jdbc.SocketFinder.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
invokevirtual java.util.logging.Logger.isLoggable:(Ljava/util/logging/Level;)Z
ifeq 8
7: getstatic com.microsoft.sqlserver.jdbc.SocketFinder.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
new java.lang.StringBuilder
dup
aload 0
invokevirtual com.microsoft.sqlserver.jdbc.SocketFinder.toString:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc ": Ignored the following error while closing Selector"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aload 2
invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V
end local 2 8: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lcom/microsoft/sqlserver/jdbc/SocketFinder;
0 9 1 selector Ljava/nio/channels/Selector;
6 8 2 e Ljava/io/IOException;
Exception table:
from to target type
3 4 5 Class java.io.IOException
MethodParameters:
Name Flags
selector
void close(java.net.Socket);
descriptor: (Ljava/net/Socket;)V
flags: (0x0000)
Code:
stack=5, locals=3, args_size=2
start local 0 start local 1 0: aload 1
ifnull 8
1: getstatic com.microsoft.sqlserver.jdbc.SocketFinder.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINER:Ljava/util/logging/Level;
invokevirtual java.util.logging.Logger.isLoggable:(Ljava/util/logging/Level;)Z
ifeq 3
2: getstatic com.microsoft.sqlserver.jdbc.SocketFinder.logger:Ljava/util/logging/Logger;
new java.lang.StringBuilder
dup
aload 0
invokevirtual com.microsoft.sqlserver.jdbc.SocketFinder.toString:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc ": Closing TCP socket:"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.util.logging.Logger.finer:(Ljava/lang/String;)V
3: StackMap locals:
StackMap stack:
aload 1
invokevirtual java.net.Socket.close:()V
4: goto 8
StackMap locals:
StackMap stack: java.io.IOException
5: astore 2
start local 2 6: getstatic com.microsoft.sqlserver.jdbc.SocketFinder.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
invokevirtual java.util.logging.Logger.isLoggable:(Ljava/util/logging/Level;)Z
ifeq 8
7: getstatic com.microsoft.sqlserver.jdbc.SocketFinder.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
new java.lang.StringBuilder
dup
aload 0
invokevirtual com.microsoft.sqlserver.jdbc.SocketFinder.toString:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc ": Ignored the following error while closing socket"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aload 2
invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V
end local 2 8: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lcom/microsoft/sqlserver/jdbc/SocketFinder;
0 9 1 socket Ljava/net/Socket;
6 8 2 e Ljava/io/IOException;
Exception table:
from to target type
3 4 5 Class java.io.IOException
MethodParameters:
Name Flags
socket
void close(java.nio.channels.SocketChannel);
descriptor: (Ljava/nio/channels/SocketChannel;)V
flags: (0x0000)
Code:
stack=5, locals=3, args_size=2
start local 0 start local 1 0: aload 1
ifnull 10
1: getstatic com.microsoft.sqlserver.jdbc.SocketFinder.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINER:Ljava/util/logging/Level;
invokevirtual java.util.logging.Logger.isLoggable:(Ljava/util/logging/Level;)Z
ifeq 3
2: getstatic com.microsoft.sqlserver.jdbc.SocketFinder.logger:Ljava/util/logging/Logger;
new java.lang.StringBuilder
dup
aload 0
invokevirtual com.microsoft.sqlserver.jdbc.SocketFinder.toString:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc ": Closing TCP socket channel:"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.util.logging.Logger.finer:(Ljava/lang/String;)V
3: StackMap locals:
StackMap stack:
aload 1
invokevirtual java.nio.channels.SocketChannel.close:()V
4: goto 10
StackMap locals:
StackMap stack: java.io.IOException
5: astore 2
start local 2 6: getstatic com.microsoft.sqlserver.jdbc.SocketFinder.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
invokevirtual java.util.logging.Logger.isLoggable:(Ljava/util/logging/Level;)Z
ifeq 10
7: getstatic com.microsoft.sqlserver.jdbc.SocketFinder.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
new java.lang.StringBuilder
dup
aload 0
invokevirtual com.microsoft.sqlserver.jdbc.SocketFinder.toString:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "Ignored the following error while closing socketChannel"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
8: aload 2
9: invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V
end local 2 10: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lcom/microsoft/sqlserver/jdbc/SocketFinder;
0 11 1 socketChannel Ljava/nio/channels/SocketChannel;
6 10 2 e Ljava/io/IOException;
Exception table:
from to target type
3 4 5 Class java.io.IOException
MethodParameters:
Name Flags
socketChannel
void updateResult(java.net.Socket, java.io.IOException, java.lang.String);
descriptor: (Ljava/net/Socket;Ljava/io/IOException;Ljava/lang/String;)V
flags: (0x0000)
Code:
stack=4, locals=6, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
getfield com.microsoft.sqlserver.jdbc.SocketFinder.result:Lcom/microsoft/sqlserver/jdbc/SocketFinder$Result;
getstatic com.microsoft.sqlserver.jdbc.SocketFinder$Result.UNKNOWN:Lcom/microsoft/sqlserver/jdbc/SocketFinder$Result;
invokevirtual com.microsoft.sqlserver.jdbc.SocketFinder$Result.equals:(Ljava/lang/Object;)Z
ifeq 40
1: getstatic com.microsoft.sqlserver.jdbc.SocketFinder.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINER:Ljava/util/logging/Level;
invokevirtual java.util.logging.Logger.isLoggable:(Ljava/util/logging/Level;)Z
ifeq 3
2: getstatic com.microsoft.sqlserver.jdbc.SocketFinder.logger:Ljava/util/logging/Logger;
new java.lang.StringBuilder
dup
ldc "The following child thread is waiting for socketFinderLock:"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 3
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.util.logging.Logger.finer:(Ljava/lang/String;)V
3: StackMap locals:
StackMap stack:
aload 0
getfield com.microsoft.sqlserver.jdbc.SocketFinder.socketFinderlock:Ljava/lang/Object;
dup
astore 4
monitorenter
4: getstatic com.microsoft.sqlserver.jdbc.SocketFinder.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINER:Ljava/util/logging/Level;
invokevirtual java.util.logging.Logger.isLoggable:(Ljava/util/logging/Level;)Z
ifeq 6
5: getstatic com.microsoft.sqlserver.jdbc.SocketFinder.logger:Ljava/util/logging/Logger;
new java.lang.StringBuilder
dup
ldc "The following child thread acquired socketFinderLock:"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 3
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.util.logging.Logger.finer:(Ljava/lang/String;)V
6: StackMap locals: java.lang.Object
StackMap stack:
aload 0
getfield com.microsoft.sqlserver.jdbc.SocketFinder.result:Lcom/microsoft/sqlserver/jdbc/SocketFinder$Result;
getstatic com.microsoft.sqlserver.jdbc.SocketFinder$Result.UNKNOWN:Lcom/microsoft/sqlserver/jdbc/SocketFinder$Result;
invokevirtual com.microsoft.sqlserver.jdbc.SocketFinder$Result.equals:(Ljava/lang/Object;)Z
ifeq 14
7: aload 2
ifnonnull 12
aload 0
getfield com.microsoft.sqlserver.jdbc.SocketFinder.selectedSocket:Ljava/net/Socket;
ifnonnull 12
8: aload 0
aload 1
putfield com.microsoft.sqlserver.jdbc.SocketFinder.selectedSocket:Ljava/net/Socket;
9: aload 0
getstatic com.microsoft.sqlserver.jdbc.SocketFinder$Result.SUCCESS:Lcom/microsoft/sqlserver/jdbc/SocketFinder$Result;
putfield com.microsoft.sqlserver.jdbc.SocketFinder.result:Lcom/microsoft/sqlserver/jdbc/SocketFinder$Result;
10: getstatic com.microsoft.sqlserver.jdbc.SocketFinder.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINER:Ljava/util/logging/Level;
invokevirtual java.util.logging.Logger.isLoggable:(Ljava/util/logging/Level;)Z
ifeq 12
11: getstatic com.microsoft.sqlserver.jdbc.SocketFinder.logger:Ljava/util/logging/Logger;
new java.lang.StringBuilder
dup
ldc "The socket of the following thread has been chosen:"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 3
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.util.logging.Logger.finer:(Ljava/lang/String;)V
12: StackMap locals:
StackMap stack:
aload 2
ifnull 14
13: aload 0
aload 2
aload 3
invokevirtual com.microsoft.sqlserver.jdbc.SocketFinder.updateSelectedException:(Ljava/io/IOException;Ljava/lang/String;)V
14: StackMap locals:
StackMap stack:
aload 0
dup
getfield com.microsoft.sqlserver.jdbc.SocketFinder.noOfThreadsThatNotified:I
iconst_1
iadd
putfield com.microsoft.sqlserver.jdbc.SocketFinder.noOfThreadsThatNotified:I
15: aload 0
getfield com.microsoft.sqlserver.jdbc.SocketFinder.noOfThreadsThatNotified:I
aload 0
getfield com.microsoft.sqlserver.jdbc.SocketFinder.noOfSpawnedThreads:I
if_icmplt 17
aload 0
getfield com.microsoft.sqlserver.jdbc.SocketFinder.result:Lcom/microsoft/sqlserver/jdbc/SocketFinder$Result;
getstatic com.microsoft.sqlserver.jdbc.SocketFinder$Result.UNKNOWN:Lcom/microsoft/sqlserver/jdbc/SocketFinder$Result;
invokevirtual com.microsoft.sqlserver.jdbc.SocketFinder$Result.equals:(Ljava/lang/Object;)Z
ifeq 17
16: aload 0
getstatic com.microsoft.sqlserver.jdbc.SocketFinder$Result.FAILURE:Lcom/microsoft/sqlserver/jdbc/SocketFinder$Result;
putfield com.microsoft.sqlserver.jdbc.SocketFinder.result:Lcom/microsoft/sqlserver/jdbc/SocketFinder$Result;
17: StackMap locals:
StackMap stack:
aload 0
getfield com.microsoft.sqlserver.jdbc.SocketFinder.result:Lcom/microsoft/sqlserver/jdbc/SocketFinder$Result;
getstatic com.microsoft.sqlserver.jdbc.SocketFinder$Result.UNKNOWN:Lcom/microsoft/sqlserver/jdbc/SocketFinder$Result;
invokevirtual com.microsoft.sqlserver.jdbc.SocketFinder$Result.equals:(Ljava/lang/Object;)Z
ifne 34
18: getstatic com.microsoft.sqlserver.jdbc.SocketFinder.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINER:Ljava/util/logging/Level;
invokevirtual java.util.logging.Logger.isLoggable:(Ljava/util/logging/Level;)Z
ifeq 20
19: getstatic com.microsoft.sqlserver.jdbc.SocketFinder.logger:Ljava/util/logging/Logger;
new java.lang.StringBuilder
dup
ldc "The following child thread is waiting for parentThreadLock:"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 3
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.util.logging.Logger.finer:(Ljava/lang/String;)V
20: StackMap locals:
StackMap stack:
aload 0
getfield com.microsoft.sqlserver.jdbc.SocketFinder.parentThreadLock:Ljava/lang/Object;
dup
astore 5
monitorenter
21: getstatic com.microsoft.sqlserver.jdbc.SocketFinder.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINER:Ljava/util/logging/Level;
invokevirtual java.util.logging.Logger.isLoggable:(Ljava/util/logging/Level;)Z
ifeq 23
22: getstatic com.microsoft.sqlserver.jdbc.SocketFinder.logger:Ljava/util/logging/Logger;
new java.lang.StringBuilder
dup
ldc "The following child thread acquired parentThreadLock:"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 3
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.util.logging.Logger.finer:(Ljava/lang/String;)V
23: StackMap locals: java.lang.Object
StackMap stack:
aload 0
getfield com.microsoft.sqlserver.jdbc.SocketFinder.parentThreadLock:Ljava/lang/Object;
invokevirtual java.lang.Object.notifyAll:()V
24: aload 5
monitorexit
25: goto 28
StackMap locals:
StackMap stack: java.lang.Throwable
26: aload 5
monitorexit
27: athrow
28: StackMap locals:
StackMap stack:
getstatic com.microsoft.sqlserver.jdbc.SocketFinder.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINER:Ljava/util/logging/Level;
invokevirtual java.util.logging.Logger.isLoggable:(Ljava/util/logging/Level;)Z
ifeq 34
29: getstatic com.microsoft.sqlserver.jdbc.SocketFinder.logger:Ljava/util/logging/Logger;
30: new java.lang.StringBuilder
dup
ldc "The following child thread released parentThreadLock and notified the parent thread:"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
31: aload 3
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
32: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
33: invokevirtual java.util.logging.Logger.finer:(Ljava/lang/String;)V
34: StackMap locals:
StackMap stack:
aload 4
monitorexit
35: goto 38
StackMap locals:
StackMap stack: java.lang.Throwable
36: aload 4
monitorexit
37: athrow
38: StackMap locals:
StackMap stack:
getstatic com.microsoft.sqlserver.jdbc.SocketFinder.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINER:Ljava/util/logging/Level;
invokevirtual java.util.logging.Logger.isLoggable:(Ljava/util/logging/Level;)Z
ifeq 40
39: getstatic com.microsoft.sqlserver.jdbc.SocketFinder.logger:Ljava/util/logging/Logger;
new java.lang.StringBuilder
dup
ldc "The following child thread released socketFinderLock:"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 3
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.util.logging.Logger.finer:(Ljava/lang/String;)V
40: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 41 0 this Lcom/microsoft/sqlserver/jdbc/SocketFinder;
0 41 1 socket Ljava/net/Socket;
0 41 2 exception Ljava/io/IOException;
0 41 3 threadId Ljava/lang/String;
Exception table:
from to target type
21 25 26 any
26 27 26 any
4 35 36 any
36 37 36 any
MethodParameters:
Name Flags
socket
exception
threadId
public void updateSelectedException(java.io.IOException, java.lang.String);
descriptor: (Ljava/io/IOException;Ljava/lang/String;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=4, args_size=3
start local 0 start local 1 start local 2 0: iconst_0
istore 3
start local 3 1: aload 0
getfield com.microsoft.sqlserver.jdbc.SocketFinder.selectedException:Ljava/io/IOException;
ifnull 3
2: aload 1
instanceof java.net.SocketTimeoutException
ifne 5
aload 0
getfield com.microsoft.sqlserver.jdbc.SocketFinder.selectedException:Ljava/io/IOException;
instanceof java.net.SocketTimeoutException
ifeq 5
3: StackMap locals: int
StackMap stack:
aload 0
aload 1
putfield com.microsoft.sqlserver.jdbc.SocketFinder.selectedException:Ljava/io/IOException;
4: iconst_1
istore 3
5: StackMap locals:
StackMap stack:
iload 3
ifeq 10
6: getstatic com.microsoft.sqlserver.jdbc.SocketFinder.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINER:Ljava/util/logging/Level;
invokevirtual java.util.logging.Logger.isLoggable:(Ljava/util/logging/Level;)Z
ifeq 10
7: getstatic com.microsoft.sqlserver.jdbc.SocketFinder.logger:Ljava/util/logging/Logger;
new java.lang.StringBuilder
dup
ldc "The selected exception is updated to the following: ExceptionType:"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
8: ldc "; ExceptionMessage:"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 1
invokevirtual java.io.IOException.getMessage:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc "; by the following thread:"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
9: invokevirtual java.util.logging.Logger.finer:(Ljava/lang/String;)V
10: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lcom/microsoft/sqlserver/jdbc/SocketFinder;
0 11 1 ex Ljava/io/IOException;
0 11 2 traceId Ljava/lang/String;
1 11 3 updatedException Z
MethodParameters:
Name Flags
ex
traceId
public java.lang.String toString();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield com.microsoft.sqlserver.jdbc.SocketFinder.traceID:Ljava/lang/String;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/microsoft/sqlserver/jdbc/SocketFinder;
}
SourceFile: "IOBuffer.java"
NestMembers:
com.microsoft.sqlserver.jdbc.SocketFinder$Result
InnerClasses:
final Result = com.microsoft.sqlserver.jdbc.SocketFinder$Result of com.microsoft.sqlserver.jdbc.SocketFinder