class io.vertx.ext.mail.impl.SMTPConnectionPool implements io.vertx.ext.mail.impl.ConnectionLifeCycleListener
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: io.vertx.ext.mail.impl.SMTPConnectionPool
super_class: java.lang.Object
{
private static final io.vertx.core.logging.Logger log;
descriptor: Lio/vertx/core/logging/Logger;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private final int maxSockets;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final boolean keepAlive;
descriptor: Z
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.util.Queue<io.vertx.ext.mail.impl.SMTPConnectionPool$Waiter> waiters;
descriptor: Ljava/util/Queue;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/Queue<Lio/vertx/ext/mail/impl/SMTPConnectionPool$Waiter;>;
private final java.util.Set<io.vertx.ext.mail.impl.SMTPConnection> allConnections;
descriptor: Ljava/util/Set;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/Set<Lio/vertx/ext/mail/impl/SMTPConnection;>;
private final io.vertx.core.net.NetClient netClient;
descriptor: Lio/vertx/core/net/NetClient;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final io.vertx.ext.mail.MailConfig config;
descriptor: Lio/vertx/ext/mail/MailConfig;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final io.vertx.ext.auth.PRNG prng;
descriptor: Lio/vertx/ext/auth/PRNG;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private java.lang.String hostname;
descriptor: Ljava/lang/String;
flags: (0x0002) ACC_PRIVATE
private boolean closed;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private int connCount;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private io.vertx.core.Handler<java.lang.Void> closeFinishedHandler;
descriptor: Lio/vertx/core/Handler;
flags: (0x0002) ACC_PRIVATE
Signature: Lio/vertx/core/Handler<Ljava/lang/Void;>;
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: ldc Lio/vertx/ext/mail/impl/SMTPConnectionPool;
invokestatic io.vertx.core.logging.LoggerFactory.getLogger:(Ljava/lang/Class;)Lio/vertx/core/logging/Logger;
putstatic io.vertx.ext.mail.impl.SMTPConnectionPool.log:Lio/vertx/core/logging/Logger;
return
LocalVariableTable:
Start End Slot Name Signature
void <init>(io.vertx.core.Vertx, io.vertx.ext.mail.MailConfig);
descriptor: (Lio/vertx/core/Vertx;Lio/vertx/ext/mail/MailConfig;)V
flags: (0x0000)
Code:
stack=4, locals=4, 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.util.ArrayDeque
dup
invokespecial java.util.ArrayDeque.<init>:()V
putfield io.vertx.ext.mail.impl.SMTPConnectionPool.waiters:Ljava/util/Queue;
2: aload 0
new java.util.HashSet
dup
invokespecial java.util.HashSet.<init>:()V
putfield io.vertx.ext.mail.impl.SMTPConnectionPool.allConnections:Ljava/util/Set;
3: aload 0
iconst_0
putfield io.vertx.ext.mail.impl.SMTPConnectionPool.closed:Z
4: aload 0
aload 2
putfield io.vertx.ext.mail.impl.SMTPConnectionPool.config:Lio/vertx/ext/mail/MailConfig;
5: aload 0
aload 2
invokevirtual io.vertx.ext.mail.MailConfig.getMaxPoolSize:()I
putfield io.vertx.ext.mail.impl.SMTPConnectionPool.maxSockets:I
6: aload 0
aload 2
invokevirtual io.vertx.ext.mail.MailConfig.isKeepAlive:()Z
putfield io.vertx.ext.mail.impl.SMTPConnectionPool.keepAlive:Z
7: aload 0
new io.vertx.ext.auth.PRNG
dup
aload 1
invokespecial io.vertx.ext.auth.PRNG.<init>:(Lio/vertx/core/Vertx;)V
putfield io.vertx.ext.mail.impl.SMTPConnectionPool.prng:Lio/vertx/ext/auth/PRNG;
8: new io.vertx.core.net.NetClientOptions
dup
invokespecial io.vertx.core.net.NetClientOptions.<init>:()V
aload 2
invokevirtual io.vertx.ext.mail.MailConfig.isSsl:()Z
invokevirtual io.vertx.core.net.NetClientOptions.setSsl:(Z)Lio/vertx/core/net/NetClientOptions;
aload 2
invokevirtual io.vertx.ext.mail.MailConfig.isTrustAll:()Z
invokevirtual io.vertx.core.net.NetClientOptions.setTrustAll:(Z)Lio/vertx/core/net/NetClientOptions;
astore 3
start local 3 9: aload 2
invokevirtual io.vertx.ext.mail.MailConfig.isSsl:()Z
ifne 10
aload 2
invokevirtual io.vertx.ext.mail.MailConfig.getStarttls:()Lio/vertx/ext/mail/StartTLSOptions;
getstatic io.vertx.ext.mail.StartTLSOptions.DISABLED:Lio/vertx/ext/mail/StartTLSOptions;
if_acmpeq 12
StackMap locals: io.vertx.ext.mail.impl.SMTPConnectionPool io.vertx.core.Vertx io.vertx.ext.mail.MailConfig io.vertx.core.net.NetClientOptions
StackMap stack:
10: aload 2
invokevirtual io.vertx.ext.mail.MailConfig.isTrustAll:()Z
ifne 12
11: aload 3
ldc "HTTPS"
invokevirtual io.vertx.core.net.NetClientOptions.setHostnameVerificationAlgorithm:(Ljava/lang/String;)Lio/vertx/core/net/NetClientOptions;
pop
12: StackMap locals:
StackMap stack:
aload 2
invokevirtual io.vertx.ext.mail.MailConfig.getKeyStore:()Ljava/lang/String;
ifnull 16
13: aload 3
new io.vertx.core.net.JksOptions
dup
invokespecial io.vertx.core.net.JksOptions.<init>:()V
aload 2
invokevirtual io.vertx.ext.mail.MailConfig.getKeyStore:()Ljava/lang/String;
invokevirtual io.vertx.core.net.JksOptions.setPath:(Ljava/lang/String;)Lio/vertx/core/net/JksOptions;
14: aload 2
invokevirtual io.vertx.ext.mail.MailConfig.getKeyStorePassword:()Ljava/lang/String;
invokevirtual io.vertx.core.net.JksOptions.setPassword:(Ljava/lang/String;)Lio/vertx/core/net/JksOptions;
15: invokevirtual io.vertx.core.net.NetClientOptions.setTrustStoreOptions:(Lio/vertx/core/net/JksOptions;)Lio/vertx/core/net/NetClientOptions;
pop
16: StackMap locals:
StackMap stack:
aload 0
aload 1
aload 3
invokeinterface io.vertx.core.Vertx.createNetClient:(Lio/vertx/core/net/NetClientOptions;)Lio/vertx/core/net/NetClient;
putfield io.vertx.ext.mail.impl.SMTPConnectionPool.netClient:Lio/vertx/core/net/NetClient;
17: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 18 0 this Lio/vertx/ext/mail/impl/SMTPConnectionPool;
0 18 1 vertx Lio/vertx/core/Vertx;
0 18 2 config Lio/vertx/ext/mail/MailConfig;
9 18 3 netClientOptions Lio/vertx/core/net/NetClientOptions;
MethodParameters:
Name Flags
vertx
config
void getConnection(java.lang.String, io.vertx.core.Handler<io.vertx.core.AsyncResult<io.vertx.ext.mail.impl.SMTPConnection>>);
descriptor: (Ljava/lang/String;Lio/vertx/core/Handler;)V
flags: (0x0000)
Code:
stack=2, locals=3, args_size=3
start local 0 start local 1 start local 2 0: getstatic io.vertx.ext.mail.impl.SMTPConnectionPool.log:Lio/vertx/core/logging/Logger;
ldc "getConnection()"
invokevirtual io.vertx.core.logging.Logger.debug:(Ljava/lang/Object;)V
1: aload 0
aload 1
putfield io.vertx.ext.mail.impl.SMTPConnectionPool.hostname:Ljava/lang/String;
2: aload 0
getfield io.vertx.ext.mail.impl.SMTPConnectionPool.closed:Z
ifeq 5
3: aload 2
ldc "connection pool is closed"
invokestatic io.vertx.core.Future.failedFuture:(Ljava/lang/String;)Lio/vertx/core/Future;
invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
4: goto 6
5: StackMap locals:
StackMap stack:
aload 0
aload 2
invokevirtual io.vertx.ext.mail.impl.SMTPConnectionPool.getConnection0:(Lio/vertx/core/Handler;)V
6: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lio/vertx/ext/mail/impl/SMTPConnectionPool;
0 7 1 hostname Ljava/lang/String;
0 7 2 resultHandler Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Lio/vertx/ext/mail/impl/SMTPConnection;>;>;
Signature: (Ljava/lang/String;Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Lio/vertx/ext/mail/impl/SMTPConnection;>;>;)V
MethodParameters:
Name Flags
hostname
resultHandler
void close();
descriptor: ()V
flags: (0x0000)
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
aconst_null
invokevirtual io.vertx.ext.mail.impl.SMTPConnectionPool.close:(Lio/vertx/core/Handler;)V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lio/vertx/ext/mail/impl/SMTPConnectionPool;
synchronized void close(io.vertx.core.Handler<java.lang.Void>);
descriptor: (Lio/vertx/core/Handler;)V
flags: (0x0020) ACC_SYNCHRONIZED
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield io.vertx.ext.mail.impl.SMTPConnectionPool.closed:Z
ifeq 2
1: new java.lang.IllegalStateException
dup
ldc "pool is already closed"
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 0
iconst_1
putfield io.vertx.ext.mail.impl.SMTPConnectionPool.closed:Z
3: aload 0
aload 1
putfield io.vertx.ext.mail.impl.SMTPConnectionPool.closeFinishedHandler:Lio/vertx/core/Handler;
4: aload 0
invokevirtual io.vertx.ext.mail.impl.SMTPConnectionPool.closeAllConnections:()V
5: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lio/vertx/ext/mail/impl/SMTPConnectionPool;
0 6 1 finishedHandler Lio/vertx/core/Handler<Ljava/lang/Void;>;
Signature: (Lio/vertx/core/Handler<Ljava/lang/Void;>;)V
MethodParameters:
Name Flags
finishedHandler
synchronized int connCount();
descriptor: ()I
flags: (0x0020) ACC_SYNCHRONIZED
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield io.vertx.ext.mail.impl.SMTPConnectionPool.connCount:I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lio/vertx/ext/mail/impl/SMTPConnectionPool;
public synchronized void dataEnded(io.vertx.ext.mail.impl.SMTPConnection);
descriptor: (Lio/vertx/ext/mail/impl/SMTPConnection;)V
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokevirtual io.vertx.ext.mail.impl.SMTPConnectionPool.checkReuseConnection:(Lio/vertx/ext/mail/impl/SMTPConnection;)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lio/vertx/ext/mail/impl/SMTPConnectionPool;
0 2 1 conn Lio/vertx/ext/mail/impl/SMTPConnection;
MethodParameters:
Name Flags
conn
public synchronized void connectionClosed(io.vertx.ext.mail.impl.SMTPConnection);
descriptor: (Lio/vertx/ext/mail/impl/SMTPConnection;)V
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: getstatic io.vertx.ext.mail.impl.SMTPConnectionPool.log:Lio/vertx/core/logging/Logger;
ldc "connection closed, removing from pool"
invokevirtual io.vertx.core.logging.Logger.debug:(Ljava/lang/Object;)V
1: aload 0
dup
getfield io.vertx.ext.mail.impl.SMTPConnectionPool.connCount:I
iconst_1
isub
putfield io.vertx.ext.mail.impl.SMTPConnectionPool.connCount:I
2: aload 1
ifnull 4
3: aload 0
getfield io.vertx.ext.mail.impl.SMTPConnectionPool.allConnections:Ljava/util/Set;
aload 1
invokeinterface java.util.Set.remove:(Ljava/lang/Object;)Z
pop
4: StackMap locals:
StackMap stack:
aload 0
getfield io.vertx.ext.mail.impl.SMTPConnectionPool.waiters:Ljava/util/Queue;
invokeinterface java.util.Queue.poll:()Ljava/lang/Object;
checkcast io.vertx.ext.mail.impl.SMTPConnectionPool$Waiter
astore 2
start local 2 5: aload 2
ifnull 8
6: getstatic io.vertx.ext.mail.impl.SMTPConnectionPool.log:Lio/vertx/core/logging/Logger;
ldc "creating new connection for waiter"
invokevirtual io.vertx.core.logging.Logger.debug:(Ljava/lang/Object;)V
7: aload 0
aload 2
getfield io.vertx.ext.mail.impl.SMTPConnectionPool$Waiter.handler:Lio/vertx/core/Handler;
invokevirtual io.vertx.ext.mail.impl.SMTPConnectionPool.createNewConnection:(Lio/vertx/core/Handler;)V
8: StackMap locals: io.vertx.ext.mail.impl.SMTPConnectionPool$Waiter
StackMap stack:
aload 0
getfield io.vertx.ext.mail.impl.SMTPConnectionPool.closed:Z
ifeq 13
aload 0
getfield io.vertx.ext.mail.impl.SMTPConnectionPool.connCount:I
ifne 13
9: getstatic io.vertx.ext.mail.impl.SMTPConnectionPool.log:Lio/vertx/core/logging/Logger;
ldc "all connections closed, closing NetClient"
invokevirtual io.vertx.core.logging.Logger.debug:(Ljava/lang/Object;)V
10: aload 0
getfield io.vertx.ext.mail.impl.SMTPConnectionPool.netClient:Lio/vertx/core/net/NetClient;
invokeinterface io.vertx.core.net.NetClient.close:()V
11: aload 0
getfield io.vertx.ext.mail.impl.SMTPConnectionPool.closeFinishedHandler:Lio/vertx/core/Handler;
ifnull 13
12: aload 0
getfield io.vertx.ext.mail.impl.SMTPConnectionPool.closeFinishedHandler:Lio/vertx/core/Handler;
aconst_null
invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
13: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Lio/vertx/ext/mail/impl/SMTPConnectionPool;
0 14 1 conn Lio/vertx/ext/mail/impl/SMTPConnection;
5 14 2 waiter Lio/vertx/ext/mail/impl/SMTPConnectionPool$Waiter;
MethodParameters:
Name Flags
conn
private synchronized void getConnection0(io.vertx.core.Handler<io.vertx.core.AsyncResult<io.vertx.ext.mail.impl.SMTPConnection>>);
descriptor: (Lio/vertx/core/Handler;)V
flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
Code:
stack=4, locals=5, args_size=2
start local 0 start local 1 0: aconst_null
astore 2
start local 2 1: aload 0
getfield io.vertx.ext.mail.impl.SMTPConnectionPool.allConnections:Ljava/util/Set;
invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
astore 4
goto 6
StackMap locals: io.vertx.ext.mail.impl.SMTPConnectionPool io.vertx.core.Handler io.vertx.ext.mail.impl.SMTPConnection top java.util.Iterator
StackMap stack:
2: aload 4
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast io.vertx.ext.mail.impl.SMTPConnection
astore 3
start local 3 3: aload 3
invokevirtual io.vertx.ext.mail.impl.SMTPConnection.isBroken:()Z
ifne 6
aload 3
invokevirtual io.vertx.ext.mail.impl.SMTPConnection.isIdle:()Z
ifeq 6
4: aload 3
astore 2
5: goto 7
end local 3 6: StackMap locals:
StackMap stack:
aload 4
invokeinterface java.util.Iterator.hasNext:()Z
ifne 2
7: StackMap locals: io.vertx.ext.mail.impl.SMTPConnectionPool io.vertx.core.Handler io.vertx.ext.mail.impl.SMTPConnection
StackMap stack:
aload 2
ifnonnull 11
aload 0
getfield io.vertx.ext.mail.impl.SMTPConnectionPool.connCount:I
aload 0
getfield io.vertx.ext.mail.impl.SMTPConnectionPool.maxSockets:I
if_icmplt 11
8: getstatic io.vertx.ext.mail.impl.SMTPConnectionPool.log:Lio/vertx/core/logging/Logger;
ldc "waiting for a free socket"
invokevirtual io.vertx.core.logging.Logger.debug:(Ljava/lang/Object;)V
9: aload 0
getfield io.vertx.ext.mail.impl.SMTPConnectionPool.waiters:Ljava/util/Queue;
new io.vertx.ext.mail.impl.SMTPConnectionPool$Waiter
dup
aload 1
invokespecial io.vertx.ext.mail.impl.SMTPConnectionPool$Waiter.<init>:(Lio/vertx/core/Handler;)V
invokeinterface java.util.Queue.add:(Ljava/lang/Object;)Z
pop
10: goto 21
11: StackMap locals:
StackMap stack:
aload 2
ifnonnull 15
12: getstatic io.vertx.ext.mail.impl.SMTPConnectionPool.log:Lio/vertx/core/logging/Logger;
ldc "create a new connection"
invokevirtual io.vertx.core.logging.Logger.debug:(Ljava/lang/Object;)V
13: aload 0
aload 1
invokevirtual io.vertx.ext.mail.impl.SMTPConnectionPool.createNewConnection:(Lio/vertx/core/Handler;)V
14: goto 21
15: StackMap locals:
StackMap stack:
aload 2
invokevirtual io.vertx.ext.mail.impl.SMTPConnection.isClosed:()Z
ifeq 17
16: getstatic io.vertx.ext.mail.impl.SMTPConnectionPool.log:Lio/vertx/core/logging/Logger;
ldc "idle connection is closed already, this may cause a problem"
invokevirtual io.vertx.core.logging.Logger.warn:(Ljava/lang/Object;)V
17: StackMap locals:
StackMap stack:
getstatic io.vertx.ext.mail.impl.SMTPConnectionPool.log:Lio/vertx/core/logging/Logger;
ldc "found idle connection, checking"
invokevirtual io.vertx.core.logging.Logger.debug:(Ljava/lang/Object;)V
18: aload 2
astore 3
start local 3 19: aload 3
invokevirtual io.vertx.ext.mail.impl.SMTPConnection.useConnection:()V
20: aload 3
invokevirtual io.vertx.ext.mail.impl.SMTPConnection.getContext:()Lio/vertx/core/Context;
aload 0
aload 3
aload 1
invokedynamic handle(Lio/vertx/ext/mail/impl/SMTPConnectionPool;Lio/vertx/ext/mail/impl/SMTPConnection;Lio/vertx/core/Handler;)Lio/vertx/core/Handler;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
(Ljava/lang/Object;)V
io/vertx/ext/mail/impl/SMTPConnectionPool.lambda$0(Lio/vertx/ext/mail/impl/SMTPConnection;Lio/vertx/core/Handler;Ljava/lang/Void;)V (7)
(Ljava/lang/Void;)V
invokeinterface io.vertx.core.Context.runOnContext:(Lio/vertx/core/Handler;)V
end local 3 21: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 22 0 this Lio/vertx/ext/mail/impl/SMTPConnectionPool;
0 22 1 handler Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Lio/vertx/ext/mail/impl/SMTPConnection;>;>;
1 22 2 idleConn Lio/vertx/ext/mail/impl/SMTPConnection;
3 6 3 conn Lio/vertx/ext/mail/impl/SMTPConnection;
19 21 3 conn Lio/vertx/ext/mail/impl/SMTPConnection;
Signature: (Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Lio/vertx/ext/mail/impl/SMTPConnection;>;>;)V
MethodParameters:
Name Flags
handler
private synchronized void checkReuseConnection(io.vertx.ext.mail.impl.SMTPConnection);
descriptor: (Lio/vertx/ext/mail/impl/SMTPConnection;)V
flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual io.vertx.ext.mail.impl.SMTPConnection.isBroken:()Z
ifeq 4
1: getstatic io.vertx.ext.mail.impl.SMTPConnectionPool.log:Lio/vertx/core/logging/Logger;
ldc "connection is broken, closing"
invokevirtual io.vertx.core.logging.Logger.debug:(Ljava/lang/Object;)V
2: aload 1
invokevirtual io.vertx.ext.mail.impl.SMTPConnection.close:()V
3: goto 17
4: StackMap locals:
StackMap stack:
aload 0
getfield io.vertx.ext.mail.impl.SMTPConnectionPool.keepAlive:Z
ifeq 5
aload 0
getfield io.vertx.ext.mail.impl.SMTPConnectionPool.closed:Z
ifeq 8
5: StackMap locals:
StackMap stack:
getstatic io.vertx.ext.mail.impl.SMTPConnectionPool.log:Lio/vertx/core/logging/Logger;
ldc "connection pool is disabled or pool is already closed, immediately doing QUIT"
invokevirtual io.vertx.core.logging.Logger.debug:(Ljava/lang/Object;)V
6: aload 1
invokevirtual io.vertx.ext.mail.impl.SMTPConnection.close:()V
7: goto 17
8: StackMap locals:
StackMap stack:
getstatic io.vertx.ext.mail.impl.SMTPConnectionPool.log:Lio/vertx/core/logging/Logger;
ldc "checking for waiting operations"
invokevirtual io.vertx.core.logging.Logger.debug:(Ljava/lang/Object;)V
9: aload 0
getfield io.vertx.ext.mail.impl.SMTPConnectionPool.waiters:Ljava/util/Queue;
invokeinterface java.util.Queue.poll:()Ljava/lang/Object;
checkcast io.vertx.ext.mail.impl.SMTPConnectionPool$Waiter
astore 2
start local 2 10: aload 2
ifnull 15
11: getstatic io.vertx.ext.mail.impl.SMTPConnectionPool.log:Lio/vertx/core/logging/Logger;
ldc "running one waiting operation"
invokevirtual io.vertx.core.logging.Logger.debug:(Ljava/lang/Object;)V
12: aload 1
invokevirtual io.vertx.ext.mail.impl.SMTPConnection.useConnection:()V
13: aload 2
getfield io.vertx.ext.mail.impl.SMTPConnectionPool$Waiter.handler:Lio/vertx/core/Handler;
aload 1
invokestatic io.vertx.core.Future.succeededFuture:(Ljava/lang/Object;)Lio/vertx/core/Future;
invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
14: goto 17
15: StackMap locals: io.vertx.ext.mail.impl.SMTPConnectionPool$Waiter
StackMap stack:
getstatic io.vertx.ext.mail.impl.SMTPConnectionPool.log:Lio/vertx/core/logging/Logger;
ldc "keeping connection idle"
invokevirtual io.vertx.core.logging.Logger.debug:(Ljava/lang/Object;)V
16: aload 1
invokevirtual io.vertx.ext.mail.impl.SMTPConnection.setIdle:()V
end local 2 17: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 18 0 this Lio/vertx/ext/mail/impl/SMTPConnectionPool;
0 18 1 conn Lio/vertx/ext/mail/impl/SMTPConnection;
10 17 2 waiter Lio/vertx/ext/mail/impl/SMTPConnectionPool$Waiter;
MethodParameters:
Name Flags
conn
private void closeAllConnections();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=4, args_size=1
start local 0 0: aload 0
getfield io.vertx.ext.mail.impl.SMTPConnectionPool.connCount:I
ifle 17
1: aload 0
dup
astore 2
monitorenter
2: new java.util.HashSet
dup
aload 0
getfield io.vertx.ext.mail.impl.SMTPConnectionPool.allConnections:Ljava/util/Set;
invokespecial java.util.HashSet.<init>:(Ljava/util/Collection;)V
astore 1
start local 1 3: aload 0
getfield io.vertx.ext.mail.impl.SMTPConnectionPool.allConnections:Ljava/util/Set;
invokeinterface java.util.Set.clear:()V
4: aload 2
monitorexit
5: goto 8
end local 1 StackMap locals: io.vertx.ext.mail.impl.SMTPConnectionPool top io.vertx.ext.mail.impl.SMTPConnectionPool
StackMap stack: java.lang.Throwable
6: aload 2
monitorexit
7: athrow
start local 1 8: StackMap locals: io.vertx.ext.mail.impl.SMTPConnectionPool java.util.Set
StackMap stack:
aload 1
invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
astore 3
goto 15
StackMap locals: io.vertx.ext.mail.impl.SMTPConnectionPool java.util.Set top java.util.Iterator
StackMap stack:
9: aload 3
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast io.vertx.ext.mail.impl.SMTPConnection
astore 2
start local 2 10: aload 2
invokevirtual io.vertx.ext.mail.impl.SMTPConnection.isIdle:()Z
ifne 11
aload 2
invokevirtual io.vertx.ext.mail.impl.SMTPConnection.isBroken:()Z
ifeq 13
11: StackMap locals: io.vertx.ext.mail.impl.SMTPConnectionPool java.util.Set io.vertx.ext.mail.impl.SMTPConnection java.util.Iterator
StackMap stack:
aload 2
invokevirtual io.vertx.ext.mail.impl.SMTPConnection.close:()V
12: goto 15
13: StackMap locals:
StackMap stack:
getstatic io.vertx.ext.mail.impl.SMTPConnectionPool.log:Lio/vertx/core/logging/Logger;
ldc "closing connection after current send operation finishes"
invokevirtual io.vertx.core.logging.Logger.debug:(Ljava/lang/Object;)V
14: aload 2
invokevirtual io.vertx.ext.mail.impl.SMTPConnection.setDoShutdown:()V
end local 2 15: StackMap locals: io.vertx.ext.mail.impl.SMTPConnectionPool java.util.Set top java.util.Iterator
StackMap stack:
aload 3
invokeinterface java.util.Iterator.hasNext:()Z
ifne 9
16: goto 19
end local 1 17: StackMap locals: io.vertx.ext.mail.impl.SMTPConnectionPool
StackMap stack:
aload 0
getfield io.vertx.ext.mail.impl.SMTPConnectionPool.closeFinishedHandler:Lio/vertx/core/Handler;
ifnull 19
18: aload 0
getfield io.vertx.ext.mail.impl.SMTPConnectionPool.closeFinishedHandler:Lio/vertx/core/Handler;
aconst_null
invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
19: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 20 0 this Lio/vertx/ext/mail/impl/SMTPConnectionPool;
3 6 1 copy Ljava/util/Set<Lio/vertx/ext/mail/impl/SMTPConnection;>;
8 17 1 copy Ljava/util/Set<Lio/vertx/ext/mail/impl/SMTPConnection;>;
10 15 2 conn Lio/vertx/ext/mail/impl/SMTPConnection;
Exception table:
from to target type
2 5 6 any
6 7 6 any
private void createNewConnection(io.vertx.core.Handler<io.vertx.core.AsyncResult<io.vertx.ext.mail.impl.SMTPConnection>>);
descriptor: (Lio/vertx/core/Handler;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
dup
getfield io.vertx.ext.mail.impl.SMTPConnectionPool.connCount:I
iconst_1
iadd
putfield io.vertx.ext.mail.impl.SMTPConnectionPool.connCount:I
1: getstatic io.vertx.ext.mail.impl.SMTPConnectionPool.log:Lio/vertx/core/logging/Logger;
new java.lang.StringBuilder
dup
ldc "Connection count is "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield io.vertx.ext.mail.impl.SMTPConnectionPool.connCount:I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual io.vertx.core.logging.Logger.debug:(Ljava/lang/Object;)V
2: aload 0
aload 0
aload 1
invokedynamic handle(Lio/vertx/ext/mail/impl/SMTPConnectionPool;Lio/vertx/core/Handler;)Lio/vertx/core/Handler;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
(Ljava/lang/Object;)V
io/vertx/ext/mail/impl/SMTPConnectionPool.lambda$2(Lio/vertx/core/Handler;Lio/vertx/core/AsyncResult;)V (7)
(Lio/vertx/core/AsyncResult;)V
invokevirtual io.vertx.ext.mail.impl.SMTPConnectionPool.createConnection:(Lio/vertx/core/Handler;)V
3: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lio/vertx/ext/mail/impl/SMTPConnectionPool;
0 4 1 handler Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Lio/vertx/ext/mail/impl/SMTPConnection;>;>;
Signature: (Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Lio/vertx/ext/mail/impl/SMTPConnection;>;>;)V
MethodParameters:
Name Flags
handler
private void createConnection(io.vertx.core.Handler<io.vertx.core.AsyncResult<io.vertx.ext.mail.impl.SMTPConnection>>);
descriptor: (Lio/vertx/core/Handler;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=8, locals=3, args_size=2
start local 0 start local 1 0: new io.vertx.ext.mail.impl.SMTPConnection
dup
aload 0
getfield io.vertx.ext.mail.impl.SMTPConnectionPool.netClient:Lio/vertx/core/net/NetClient;
aload 0
invokespecial io.vertx.ext.mail.impl.SMTPConnection.<init>:(Lio/vertx/core/net/NetClient;Lio/vertx/ext/mail/impl/ConnectionLifeCycleListener;)V
astore 2
start local 2 1: new io.vertx.ext.mail.impl.SMTPStarter
dup
aload 2
aload 0
getfield io.vertx.ext.mail.impl.SMTPConnectionPool.config:Lio/vertx/ext/mail/MailConfig;
aload 0
getfield io.vertx.ext.mail.impl.SMTPConnectionPool.hostname:Ljava/lang/String;
aload 0
getfield io.vertx.ext.mail.impl.SMTPConnectionPool.prng:Lio/vertx/ext/auth/PRNG;
aload 1
aload 2
invokedynamic handle(Lio/vertx/core/Handler;Lio/vertx/ext/mail/impl/SMTPConnection;)Lio/vertx/core/Handler;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
(Ljava/lang/Object;)V
io/vertx/ext/mail/impl/SMTPConnectionPool.lambda$3(Lio/vertx/core/Handler;Lio/vertx/ext/mail/impl/SMTPConnection;Lio/vertx/core/AsyncResult;)V (6)
(Lio/vertx/core/AsyncResult;)V
invokespecial io.vertx.ext.mail.impl.SMTPStarter.<init>:(Lio/vertx/ext/mail/impl/SMTPConnection;Lio/vertx/ext/mail/MailConfig;Ljava/lang/String;Lio/vertx/ext/auth/PRNG;Lio/vertx/core/Handler;)V
2: invokevirtual io.vertx.ext.mail.impl.SMTPStarter.start:()V
3: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lio/vertx/ext/mail/impl/SMTPConnectionPool;
0 4 1 handler Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Lio/vertx/ext/mail/impl/SMTPConnection;>;>;
1 4 2 conn Lio/vertx/ext/mail/impl/SMTPConnection;
Signature: (Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Lio/vertx/ext/mail/impl/SMTPConnection;>;>;)V
MethodParameters:
Name Flags
handler
private void lambda$0(io.vertx.ext.mail.impl.SMTPConnection, io.vertx.core.Handler, java.lang.Void);
descriptor: (Lio/vertx/ext/mail/impl/SMTPConnection;Lio/vertx/core/Handler;Ljava/lang/Void;)V
flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
Code:
stack=6, locals=4, args_size=4
start local 0 start local 3 0: new io.vertx.ext.mail.impl.SMTPReset
dup
aload 1
aload 0
aload 2
aload 1
invokedynamic handle(Lio/vertx/ext/mail/impl/SMTPConnectionPool;Lio/vertx/core/Handler;Lio/vertx/ext/mail/impl/SMTPConnection;)Lio/vertx/core/Handler;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
(Ljava/lang/Object;)V
io/vertx/ext/mail/impl/SMTPConnectionPool.lambda$1(Lio/vertx/core/Handler;Lio/vertx/ext/mail/impl/SMTPConnection;Lio/vertx/core/AsyncResult;)V (7)
(Lio/vertx/core/AsyncResult;)V
invokespecial io.vertx.ext.mail.impl.SMTPReset.<init>:(Lio/vertx/ext/mail/impl/SMTPConnection;Lio/vertx/core/Handler;)V
1: invokevirtual io.vertx.ext.mail.impl.SMTPReset.start:()V
return
end local 3 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lio/vertx/ext/mail/impl/SMTPConnectionPool;
0 2 3 v Ljava/lang/Void;
private void lambda$2(io.vertx.core.Handler, io.vertx.core.AsyncResult);
descriptor: (Lio/vertx/core/Handler;Lio/vertx/core/AsyncResult;)V
flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
Code:
stack=2, locals=3, args_size=3
start local 0 start local 2 0: aload 2
invokeinterface io.vertx.core.AsyncResult.succeeded:()Z
ifeq 2
1: aload 0
getfield io.vertx.ext.mail.impl.SMTPConnectionPool.allConnections:Ljava/util/Set;
aload 2
invokeinterface io.vertx.core.AsyncResult.result:()Ljava/lang/Object;
checkcast io.vertx.ext.mail.impl.SMTPConnection
invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
pop
2: StackMap locals:
StackMap stack:
aload 1
aload 2
invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
3: return
end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lio/vertx/ext/mail/impl/SMTPConnectionPool;
0 4 2 result Lio/vertx/core/AsyncResult<Lio/vertx/ext/mail/impl/SMTPConnection;>;
private static void lambda$3(io.vertx.core.Handler, io.vertx.ext.mail.impl.SMTPConnection, io.vertx.core.AsyncResult);
descriptor: (Lio/vertx/core/Handler;Lio/vertx/ext/mail/impl/SMTPConnection;Lio/vertx/core/AsyncResult;)V
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=2, locals=3, args_size=3
start local 2 0: aload 2
invokeinterface io.vertx.core.AsyncResult.succeeded:()Z
ifeq 3
1: aload 0
aload 1
invokestatic io.vertx.core.Future.succeededFuture:(Ljava/lang/Object;)Lio/vertx/core/Future;
invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
2: goto 4
3: StackMap locals:
StackMap stack:
aload 0
aload 2
invokeinterface io.vertx.core.AsyncResult.cause:()Ljava/lang/Throwable;
invokestatic io.vertx.core.Future.failedFuture:(Ljava/lang/Throwable;)Lio/vertx/core/Future;
invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
4: StackMap locals:
StackMap stack:
return
end local 2 LocalVariableTable:
Start End Slot Name Signature
0 5 2 result Lio/vertx/core/AsyncResult<Ljava/lang/Void;>;
private void lambda$1(io.vertx.core.Handler, io.vertx.ext.mail.impl.SMTPConnection, io.vertx.core.AsyncResult);
descriptor: (Lio/vertx/core/Handler;Lio/vertx/ext/mail/impl/SMTPConnection;Lio/vertx/core/AsyncResult;)V
flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
Code:
stack=2, locals=4, args_size=4
start local 0 start local 3 0: aload 3
invokeinterface io.vertx.core.AsyncResult.succeeded:()Z
ifeq 3
1: aload 1
aload 2
invokestatic io.vertx.core.Future.succeededFuture:(Ljava/lang/Object;)Lio/vertx/core/Future;
invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
2: goto 6
3: StackMap locals:
StackMap stack:
aload 2
invokevirtual io.vertx.ext.mail.impl.SMTPConnection.setBroken:()V
4: getstatic io.vertx.ext.mail.impl.SMTPConnectionPool.log:Lio/vertx/core/logging/Logger;
ldc "using idle connection failed, create a new connection"
invokevirtual io.vertx.core.logging.Logger.debug:(Ljava/lang/Object;)V
5: aload 0
aload 1
invokevirtual io.vertx.ext.mail.impl.SMTPConnectionPool.createNewConnection:(Lio/vertx/core/Handler;)V
6: StackMap locals:
StackMap stack:
return
end local 3 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lio/vertx/ext/mail/impl/SMTPConnectionPool;
0 7 3 result Lio/vertx/core/AsyncResult<Ljava/lang/Void;>;
}
SourceFile: "SMTPConnectionPool.java"
NestMembers:
io.vertx.ext.mail.impl.SMTPConnectionPool$Waiter
InnerClasses:
private Waiter = io.vertx.ext.mail.impl.SMTPConnectionPool$Waiter of io.vertx.ext.mail.impl.SMTPConnectionPool
public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles