class com.mongodb.internal.connection.AsynchronousSocketChannelStream$OpenCompletionHandler implements java.nio.channels.CompletionHandler<java.lang.Void, java.lang.Object>
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: com.mongodb.internal.connection.AsynchronousSocketChannelStream$OpenCompletionHandler
super_class: java.lang.Object
{
private java.util.concurrent.atomic.AtomicReference<com.mongodb.connection.AsyncCompletionHandler<java.lang.Void>> handlerReference;
descriptor: Ljava/util/concurrent/atomic/AtomicReference;
flags: (0x0002) ACC_PRIVATE
Signature: Ljava/util/concurrent/atomic/AtomicReference<Lcom/mongodb/connection/AsyncCompletionHandler<Ljava/lang/Void;>;>;
private final java.util.Queue<java.net.SocketAddress> socketAddressQueue;
descriptor: Ljava/util/Queue;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/Queue<Ljava/net/SocketAddress;>;
private final java.nio.channels.AsynchronousSocketChannel attemptConnectionChannel;
descriptor: Ljava/nio/channels/AsynchronousSocketChannel;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
final com.mongodb.internal.connection.AsynchronousSocketChannelStream this$0;
descriptor: Lcom/mongodb/internal/connection/AsynchronousSocketChannelStream;
flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC
void <init>(com.mongodb.connection.AsyncCompletionHandler<java.lang.Void>, java.util.Queue<java.net.SocketAddress>, java.nio.channels.AsynchronousSocketChannel);
descriptor: (Lcom/mongodb/internal/connection/AsynchronousSocketChannelStream;Lcom/mongodb/connection/AsyncCompletionHandler;Ljava/util/Queue;Ljava/nio/channels/AsynchronousSocketChannel;)V
flags: (0x0000)
Code:
stack=4, locals=5, args_size=5
start local 0 start local 2 start local 3 start local 4 0: aload 0
aload 1
putfield com.mongodb.internal.connection.AsynchronousSocketChannelStream$OpenCompletionHandler.this$0:Lcom/mongodb/internal/connection/AsynchronousSocketChannelStream;
1: aload 0
invokespecial java.lang.Object.<init>:()V
2: aload 0
new java.util.concurrent.atomic.AtomicReference
dup
aload 2
invokespecial java.util.concurrent.atomic.AtomicReference.<init>:(Ljava/lang/Object;)V
putfield com.mongodb.internal.connection.AsynchronousSocketChannelStream$OpenCompletionHandler.handlerReference:Ljava/util/concurrent/atomic/AtomicReference;
3: aload 0
aload 3
putfield com.mongodb.internal.connection.AsynchronousSocketChannelStream$OpenCompletionHandler.socketAddressQueue:Ljava/util/Queue;
4: aload 0
aload 4
putfield com.mongodb.internal.connection.AsynchronousSocketChannelStream$OpenCompletionHandler.attemptConnectionChannel:Ljava/nio/channels/AsynchronousSocketChannel;
5: return
end local 4 end local 3 end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lcom/mongodb/internal/connection/AsynchronousSocketChannelStream$OpenCompletionHandler;
0 6 2 handler Lcom/mongodb/connection/AsyncCompletionHandler<Ljava/lang/Void;>;
0 6 3 socketAddressQueue Ljava/util/Queue<Ljava/net/SocketAddress;>;
0 6 4 attemptConnectionChannel Ljava/nio/channels/AsynchronousSocketChannel;
Signature: (Lcom/mongodb/connection/AsyncCompletionHandler<Ljava/lang/Void;>;Ljava/util/Queue<Ljava/net/SocketAddress;>;Ljava/nio/channels/AsynchronousSocketChannel;)V
MethodParameters:
Name Flags
this$0 final
handler final
socketAddressQueue final
attemptConnectionChannel final
public void completed(java.lang.Void, java.lang.Object);
descriptor: (Ljava/lang/Void;Ljava/lang/Object;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield com.mongodb.internal.connection.AsynchronousSocketChannelStream$OpenCompletionHandler.this$0:Lcom/mongodb/internal/connection/AsynchronousSocketChannelStream;
new com.mongodb.internal.connection.AsynchronousSocketChannelStream$AsynchronousSocketChannelAdapter
dup
aload 0
getfield com.mongodb.internal.connection.AsynchronousSocketChannelStream$OpenCompletionHandler.attemptConnectionChannel:Ljava/nio/channels/AsynchronousSocketChannel;
invokespecial com.mongodb.internal.connection.AsynchronousSocketChannelStream$AsynchronousSocketChannelAdapter.<init>:(Ljava/nio/channels/AsynchronousSocketChannel;)V
invokevirtual com.mongodb.internal.connection.AsynchronousSocketChannelStream.setChannel:(Lcom/mongodb/internal/connection/ExtendedAsynchronousByteChannel;)V
1: aload 0
getfield com.mongodb.internal.connection.AsynchronousSocketChannelStream$OpenCompletionHandler.handlerReference:Ljava/util/concurrent/atomic/AtomicReference;
aconst_null
invokevirtual java.util.concurrent.atomic.AtomicReference.getAndSet:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast com.mongodb.connection.AsyncCompletionHandler
aconst_null
invokeinterface com.mongodb.connection.AsyncCompletionHandler.completed:(Ljava/lang/Object;)V
2: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/mongodb/internal/connection/AsynchronousSocketChannelStream$OpenCompletionHandler;
0 3 1 result Ljava/lang/Void;
0 3 2 attachment Ljava/lang/Object;
MethodParameters:
Name Flags
result final
attachment final
public void failed(java.lang.Throwable, java.lang.Object);
descriptor: (Ljava/lang/Throwable;Ljava/lang/Object;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield com.mongodb.internal.connection.AsynchronousSocketChannelStream$OpenCompletionHandler.handlerReference:Ljava/util/concurrent/atomic/AtomicReference;
aconst_null
invokevirtual java.util.concurrent.atomic.AtomicReference.getAndSet:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast com.mongodb.connection.AsyncCompletionHandler
astore 3
start local 3 1: aload 0
getfield com.mongodb.internal.connection.AsynchronousSocketChannelStream$OpenCompletionHandler.socketAddressQueue:Ljava/util/Queue;
invokeinterface java.util.Queue.isEmpty:()Z
ifeq 7
2: aload 1
instanceof java.io.IOException
ifeq 5
3: aload 3
new com.mongodb.MongoSocketOpenException
dup
ldc "Exception opening socket"
aload 0
getfield com.mongodb.internal.connection.AsynchronousSocketChannelStream$OpenCompletionHandler.this$0:Lcom/mongodb/internal/connection/AsynchronousSocketChannelStream;
invokevirtual com.mongodb.internal.connection.AsynchronousSocketChannelStream.getAddress:()Lcom/mongodb/ServerAddress;
aload 1
invokespecial com.mongodb.MongoSocketOpenException.<init>:(Ljava/lang/String;Lcom/mongodb/ServerAddress;Ljava/lang/Throwable;)V
invokeinterface com.mongodb.connection.AsyncCompletionHandler.failed:(Ljava/lang/Throwable;)V
4: goto 8
5: StackMap locals: com.mongodb.connection.AsyncCompletionHandler
StackMap stack:
aload 3
aload 1
invokeinterface com.mongodb.connection.AsyncCompletionHandler.failed:(Ljava/lang/Throwable;)V
6: goto 8
7: StackMap locals:
StackMap stack:
aload 0
getfield com.mongodb.internal.connection.AsynchronousSocketChannelStream$OpenCompletionHandler.this$0:Lcom/mongodb/internal/connection/AsynchronousSocketChannelStream;
aload 3
aload 0
getfield com.mongodb.internal.connection.AsynchronousSocketChannelStream$OpenCompletionHandler.socketAddressQueue:Ljava/util/Queue;
invokevirtual com.mongodb.internal.connection.AsynchronousSocketChannelStream.initializeSocketChannel:(Lcom/mongodb/connection/AsyncCompletionHandler;Ljava/util/Queue;)V
8: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lcom/mongodb/internal/connection/AsynchronousSocketChannelStream$OpenCompletionHandler;
0 9 1 exc Ljava/lang/Throwable;
0 9 2 attachment Ljava/lang/Object;
1 9 3 localHandler Lcom/mongodb/connection/AsyncCompletionHandler<Ljava/lang/Void;>;
MethodParameters:
Name Flags
exc final
attachment final
public void completed(java.lang.Object, java.lang.Object);
descriptor: (Ljava/lang/Object;Ljava/lang/Object;)V
flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
Code:
stack=3, locals=3, args_size=3
0: aload 0
aload 1
checkcast java.lang.Void
aload 2
checkcast java.lang.Object
invokevirtual com.mongodb.internal.connection.AsynchronousSocketChannelStream$OpenCompletionHandler.completed:(Ljava/lang/Void;Ljava/lang/Object;)V
return
LocalVariableTable:
Start End Slot Name Signature
}
Signature: Ljava/lang/Object;Ljava/nio/channels/CompletionHandler<Ljava/lang/Void;Ljava/lang/Object;>;
SourceFile: "AsynchronousSocketChannelStream.java"
NestHost: com.mongodb.internal.connection.AsynchronousSocketChannelStream
InnerClasses:
private final AsynchronousSocketChannelAdapter = com.mongodb.internal.connection.AsynchronousSocketChannelStream$AsynchronousSocketChannelAdapter of com.mongodb.internal.connection.AsynchronousSocketChannelStream
private OpenCompletionHandler = com.mongodb.internal.connection.AsynchronousSocketChannelStream$OpenCompletionHandler of com.mongodb.internal.connection.AsynchronousSocketChannelStream