public final class okhttp3.internal.ws.RealWebSocket implements okhttp3.WebSocket, okhttp3.internal.ws.WebSocketReader$FrameCallback
minor version: 0
major version: 59
flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: okhttp3.internal.ws.RealWebSocket
super_class: java.lang.Object
{
private static final java.util.List<okhttp3.Protocol> ONLY_HTTP1;
descriptor: Ljava/util/List;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Signature: Ljava/util/List<Lokhttp3/Protocol;>;
private static final long MAX_QUEUE_SIZE;
descriptor: J
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 16777216
private static final long CANCEL_AFTER_CLOSE_MILLIS;
descriptor: J
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 60000
private final okhttp3.Request originalRequest;
descriptor: Lokhttp3/Request;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
final okhttp3.WebSocketListener listener;
descriptor: Lokhttp3/WebSocketListener;
flags: (0x0010) ACC_FINAL
private final java.util.Random random;
descriptor: Ljava/util/Random;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final long pingIntervalMillis;
descriptor: J
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.lang.String key;
descriptor: Ljava/lang/String;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private okhttp3.Call call;
descriptor: Lokhttp3/Call;
flags: (0x0002) ACC_PRIVATE
private final java.lang.Runnable writerRunnable;
descriptor: Ljava/lang/Runnable;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private okhttp3.internal.ws.WebSocketReader reader;
descriptor: Lokhttp3/internal/ws/WebSocketReader;
flags: (0x0002) ACC_PRIVATE
private okhttp3.internal.ws.WebSocketWriter writer;
descriptor: Lokhttp3/internal/ws/WebSocketWriter;
flags: (0x0002) ACC_PRIVATE
private java.util.concurrent.ScheduledExecutorService executor;
descriptor: Ljava/util/concurrent/ScheduledExecutorService;
flags: (0x0002) ACC_PRIVATE
private okhttp3.internal.ws.RealWebSocket$Streams streams;
descriptor: Lokhttp3/internal/ws/RealWebSocket$Streams;
flags: (0x0002) ACC_PRIVATE
private final java.util.ArrayDeque<okio.ByteString> pongQueue;
descriptor: Ljava/util/ArrayDeque;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/ArrayDeque<Lokio/ByteString;>;
private final java.util.ArrayDeque<java.lang.Object> messageAndCloseQueue;
descriptor: Ljava/util/ArrayDeque;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/ArrayDeque<Ljava/lang/Object;>;
private long queueSize;
descriptor: J
flags: (0x0002) ACC_PRIVATE
private boolean enqueuedClose;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private java.util.concurrent.ScheduledFuture<?> cancelFuture;
descriptor: Ljava/util/concurrent/ScheduledFuture;
flags: (0x0002) ACC_PRIVATE
Signature: Ljava/util/concurrent/ScheduledFuture<*>;
private int receivedCloseCode;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private java.lang.String receivedCloseReason;
descriptor: Ljava/lang/String;
flags: (0x0002) ACC_PRIVATE
private boolean failed;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private int sentPingCount;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private int receivedPingCount;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private int receivedPongCount;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private boolean awaitingPong;
descriptor: Z
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=1, locals=0, args_size=0
0: ldc Lokhttp3/internal/ws/RealWebSocket;
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 okhttp3.internal.ws.RealWebSocket.$assertionsDisabled:Z
3: getstatic okhttp3.Protocol.HTTP_1_1:Lokhttp3/Protocol;
invokestatic java.util.Collections.singletonList:(Ljava/lang/Object;)Ljava/util/List;
putstatic okhttp3.internal.ws.RealWebSocket.ONLY_HTTP1:Ljava/util/List;
4: return
LocalVariableTable:
Start End Slot Name Signature
public void <init>(okhttp3.Request, okhttp3.WebSocketListener, java.util.Random, long);
descriptor: (Lokhttp3/Request;Lokhttp3/WebSocketListener;Ljava/util/Random;J)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=7, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
new java.util.ArrayDeque
dup
invokespecial java.util.ArrayDeque.<init>:()V
putfield okhttp3.internal.ws.RealWebSocket.pongQueue:Ljava/util/ArrayDeque;
2: aload 0
new java.util.ArrayDeque
dup
invokespecial java.util.ArrayDeque.<init>:()V
putfield okhttp3.internal.ws.RealWebSocket.messageAndCloseQueue:Ljava/util/ArrayDeque;
3: aload 0
iconst_m1
putfield okhttp3.internal.ws.RealWebSocket.receivedCloseCode:I
4: ldc "GET"
aload 1
invokevirtual okhttp3.Request.method:()Ljava/lang/String;
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 6
5: new java.lang.IllegalArgumentException
dup
new java.lang.StringBuilder
dup
ldc "Request must be GET: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual okhttp3.Request.method:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
6: StackMap locals: okhttp3.internal.ws.RealWebSocket okhttp3.Request okhttp3.WebSocketListener java.util.Random long
StackMap stack:
aload 0
aload 1
putfield okhttp3.internal.ws.RealWebSocket.originalRequest:Lokhttp3/Request;
7: aload 0
aload 2
putfield okhttp3.internal.ws.RealWebSocket.listener:Lokhttp3/WebSocketListener;
8: aload 0
aload 3
putfield okhttp3.internal.ws.RealWebSocket.random:Ljava/util/Random;
9: aload 0
lload 4
putfield okhttp3.internal.ws.RealWebSocket.pingIntervalMillis:J
10: bipush 16
newarray 8
astore 6
start local 6 11: aload 3
aload 6
invokevirtual java.util.Random.nextBytes:([B)V
12: aload 0
aload 6
invokestatic okio.ByteString.of:([B)Lokio/ByteString;
invokevirtual okio.ByteString.base64:()Ljava/lang/String;
putfield okhttp3.internal.ws.RealWebSocket.key:Ljava/lang/String;
13: aload 0
new okhttp3.internal.ws.RealWebSocket$1
dup
aload 0
invokespecial okhttp3.internal.ws.RealWebSocket$1.<init>:(Lokhttp3/internal/ws/RealWebSocket;)V
putfield okhttp3.internal.ws.RealWebSocket.writerRunnable:Ljava/lang/Runnable;
14: return
end local 6 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 15 0 this Lokhttp3/internal/ws/RealWebSocket;
0 15 1 request Lokhttp3/Request;
0 15 2 listener Lokhttp3/WebSocketListener;
0 15 3 random Ljava/util/Random;
0 15 4 pingIntervalMillis J
11 15 6 nonce [B
MethodParameters:
Name Flags
request
listener
random
pingIntervalMillis
public okhttp3.Request request();
descriptor: ()Lokhttp3/Request;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield okhttp3.internal.ws.RealWebSocket.originalRequest:Lokhttp3/Request;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lokhttp3/internal/ws/RealWebSocket;
public synchronized long queueSize();
descriptor: ()J
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield okhttp3.internal.ws.RealWebSocket.queueSize:J
lreturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lokhttp3/internal/ws/RealWebSocket;
public void cancel();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield okhttp3.internal.ws.RealWebSocket.call:Lokhttp3/Call;
invokeinterface okhttp3.Call.cancel:()V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lokhttp3/internal/ws/RealWebSocket;
public void connect(okhttp3.OkHttpClient);
descriptor: (Lokhttp3/OkHttpClient;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=3, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual okhttp3.OkHttpClient.newBuilder:()Lokhttp3/OkHttpClient$Builder;
1: getstatic okhttp3.EventListener.NONE:Lokhttp3/EventListener;
invokevirtual okhttp3.OkHttpClient$Builder.eventListener:(Lokhttp3/EventListener;)Lokhttp3/OkHttpClient$Builder;
2: getstatic okhttp3.internal.ws.RealWebSocket.ONLY_HTTP1:Ljava/util/List;
invokevirtual okhttp3.OkHttpClient$Builder.protocols:(Ljava/util/List;)Lokhttp3/OkHttpClient$Builder;
3: invokevirtual okhttp3.OkHttpClient$Builder.build:()Lokhttp3/OkHttpClient;
4: astore 1
5: aload 0
getfield okhttp3.internal.ws.RealWebSocket.originalRequest:Lokhttp3/Request;
invokevirtual okhttp3.Request.newBuilder:()Lokhttp3/Request$Builder;
6: ldc "Upgrade"
ldc "websocket"
invokevirtual okhttp3.Request$Builder.header:(Ljava/lang/String;Ljava/lang/String;)Lokhttp3/Request$Builder;
7: ldc "Connection"
ldc "Upgrade"
invokevirtual okhttp3.Request$Builder.header:(Ljava/lang/String;Ljava/lang/String;)Lokhttp3/Request$Builder;
8: ldc "Sec-WebSocket-Key"
aload 0
getfield okhttp3.internal.ws.RealWebSocket.key:Ljava/lang/String;
invokevirtual okhttp3.Request$Builder.header:(Ljava/lang/String;Ljava/lang/String;)Lokhttp3/Request$Builder;
9: ldc "Sec-WebSocket-Version"
ldc "13"
invokevirtual okhttp3.Request$Builder.header:(Ljava/lang/String;Ljava/lang/String;)Lokhttp3/Request$Builder;
10: invokevirtual okhttp3.Request$Builder.build:()Lokhttp3/Request;
11: astore 2
start local 2 12: aload 0
getstatic okhttp3.internal.Internal.instance:Lokhttp3/internal/Internal;
aload 1
aload 2
invokevirtual okhttp3.internal.Internal.newWebSocketCall:(Lokhttp3/OkHttpClient;Lokhttp3/Request;)Lokhttp3/Call;
putfield okhttp3.internal.ws.RealWebSocket.call:Lokhttp3/Call;
13: aload 0
getfield okhttp3.internal.ws.RealWebSocket.call:Lokhttp3/Call;
invokeinterface okhttp3.Call.timeout:()Lokio/Timeout;
invokevirtual okio.Timeout.clearTimeout:()Lokio/Timeout;
pop
14: aload 0
getfield okhttp3.internal.ws.RealWebSocket.call:Lokhttp3/Call;
new okhttp3.internal.ws.RealWebSocket$2
dup
aload 0
aload 2
invokespecial okhttp3.internal.ws.RealWebSocket$2.<init>:(Lokhttp3/internal/ws/RealWebSocket;Lokhttp3/Request;)V
invokeinterface okhttp3.Call.enqueue:(Lokhttp3/Callback;)V
15: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Lokhttp3/internal/ws/RealWebSocket;
0 16 1 client Lokhttp3/OkHttpClient;
12 16 2 request Lokhttp3/Request;
MethodParameters:
Name Flags
client
void checkResponse(okhttp3.Response);
descriptor: (Lokhttp3/Response;)V
flags: (0x0000)
Code:
stack=5, locals=6, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual okhttp3.Response.code:()I
bipush 101
if_icmpeq 4
1: new java.net.ProtocolException
dup
new java.lang.StringBuilder
dup
ldc "Expected HTTP 101 response but was '"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
2: aload 1
invokevirtual okhttp3.Response.code:()I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc " "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 1
invokevirtual okhttp3.Response.message:()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;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
3: invokespecial java.net.ProtocolException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals:
StackMap stack:
aload 1
ldc "Connection"
invokevirtual okhttp3.Response.header:(Ljava/lang/String;)Ljava/lang/String;
astore 2
start local 2 5: ldc "Upgrade"
aload 2
invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
ifne 9
6: new java.net.ProtocolException
dup
new java.lang.StringBuilder
dup
ldc "Expected 'Connection' header value 'Upgrade' but was '"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
7: aload 2
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;
8: invokespecial java.net.ProtocolException.<init>:(Ljava/lang/String;)V
athrow
9: StackMap locals: java.lang.String
StackMap stack:
aload 1
ldc "Upgrade"
invokevirtual okhttp3.Response.header:(Ljava/lang/String;)Ljava/lang/String;
astore 3
start local 3 10: ldc "websocket"
aload 3
invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
ifne 14
11: new java.net.ProtocolException
dup
12: new java.lang.StringBuilder
dup
ldc "Expected 'Upgrade' header value 'websocket' but was '"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 3
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;
13: invokespecial java.net.ProtocolException.<init>:(Ljava/lang/String;)V
athrow
14: StackMap locals: java.lang.String
StackMap stack:
aload 1
ldc "Sec-WebSocket-Accept"
invokevirtual okhttp3.Response.header:(Ljava/lang/String;)Ljava/lang/String;
astore 4
start local 4 15: new java.lang.StringBuilder
dup
aload 0
getfield okhttp3.internal.ws.RealWebSocket.key:Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokestatic okio.ByteString.encodeUtf8:(Ljava/lang/String;)Lokio/ByteString;
16: invokevirtual okio.ByteString.sha1:()Lokio/ByteString;
invokevirtual okio.ByteString.base64:()Ljava/lang/String;
17: astore 5
start local 5 18: aload 5
aload 4
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 22
19: new java.net.ProtocolException
dup
new java.lang.StringBuilder
dup
ldc "Expected 'Sec-WebSocket-Accept' header value '"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
20: aload 5
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc "' but was '"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 4
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;
21: invokespecial java.net.ProtocolException.<init>:(Ljava/lang/String;)V
athrow
22: StackMap locals: java.lang.String java.lang.String
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 23 0 this Lokhttp3/internal/ws/RealWebSocket;
0 23 1 response Lokhttp3/Response;
5 23 2 headerConnection Ljava/lang/String;
10 23 3 headerUpgrade Ljava/lang/String;
15 23 4 headerAccept Ljava/lang/String;
18 23 5 acceptExpected Ljava/lang/String;
Exceptions:
throws java.net.ProtocolException
MethodParameters:
Name Flags
response
public void initReaderAndWriter(java.lang.String, okhttp3.internal.ws.RealWebSocket$Streams);
descriptor: (Ljava/lang/String;Lokhttp3/internal/ws/RealWebSocket$Streams;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=7, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 0
dup
astore 3
monitorenter
1: aload 0
aload 2
putfield okhttp3.internal.ws.RealWebSocket.streams:Lokhttp3/internal/ws/RealWebSocket$Streams;
2: aload 0
new okhttp3.internal.ws.WebSocketWriter
dup
aload 2
getfield okhttp3.internal.ws.RealWebSocket$Streams.client:Z
aload 2
getfield okhttp3.internal.ws.RealWebSocket$Streams.sink:Lokio/BufferedSink;
aload 0
getfield okhttp3.internal.ws.RealWebSocket.random:Ljava/util/Random;
invokespecial okhttp3.internal.ws.WebSocketWriter.<init>:(ZLokio/BufferedSink;Ljava/util/Random;)V
putfield okhttp3.internal.ws.RealWebSocket.writer:Lokhttp3/internal/ws/WebSocketWriter;
3: aload 0
new java.util.concurrent.ScheduledThreadPoolExecutor
dup
iconst_1
aload 1
iconst_0
invokestatic okhttp3.internal.Util.threadFactory:(Ljava/lang/String;Z)Ljava/util/concurrent/ThreadFactory;
invokespecial java.util.concurrent.ScheduledThreadPoolExecutor.<init>:(ILjava/util/concurrent/ThreadFactory;)V
putfield okhttp3.internal.ws.RealWebSocket.executor:Ljava/util/concurrent/ScheduledExecutorService;
4: aload 0
getfield okhttp3.internal.ws.RealWebSocket.pingIntervalMillis:J
lconst_0
lcmp
ifeq 8
5: aload 0
getfield okhttp3.internal.ws.RealWebSocket.executor:Ljava/util/concurrent/ScheduledExecutorService;
6: new okhttp3.internal.ws.RealWebSocket$PingRunnable
dup
aload 0
invokespecial okhttp3.internal.ws.RealWebSocket$PingRunnable.<init>:(Lokhttp3/internal/ws/RealWebSocket;)V
aload 0
getfield okhttp3.internal.ws.RealWebSocket.pingIntervalMillis:J
aload 0
getfield okhttp3.internal.ws.RealWebSocket.pingIntervalMillis:J
getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
7: invokeinterface java.util.concurrent.ScheduledExecutorService.scheduleAtFixedRate:(Ljava/lang/Runnable;JJLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;
pop
8: StackMap locals: okhttp3.internal.ws.RealWebSocket
StackMap stack:
aload 0
getfield okhttp3.internal.ws.RealWebSocket.messageAndCloseQueue:Ljava/util/ArrayDeque;
invokevirtual java.util.ArrayDeque.isEmpty:()Z
ifne 10
9: aload 0
invokevirtual okhttp3.internal.ws.RealWebSocket.runWriter:()V
10: StackMap locals:
StackMap stack:
aload 3
monitorexit
11: goto 14
StackMap locals:
StackMap stack: java.lang.Throwable
12: aload 3
monitorexit
13: athrow
14: StackMap locals:
StackMap stack:
aload 0
new okhttp3.internal.ws.WebSocketReader
dup
aload 2
getfield okhttp3.internal.ws.RealWebSocket$Streams.client:Z
aload 2
getfield okhttp3.internal.ws.RealWebSocket$Streams.source:Lokio/BufferedSource;
aload 0
invokespecial okhttp3.internal.ws.WebSocketReader.<init>:(ZLokio/BufferedSource;Lokhttp3/internal/ws/WebSocketReader$FrameCallback;)V
putfield okhttp3.internal.ws.RealWebSocket.reader:Lokhttp3/internal/ws/WebSocketReader;
15: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Lokhttp3/internal/ws/RealWebSocket;
0 16 1 name Ljava/lang/String;
0 16 2 streams Lokhttp3/internal/ws/RealWebSocket$Streams;
Exception table:
from to target type
1 11 12 any
12 13 12 any
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
name
streams
public void loopReader();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: goto 2
1: StackMap locals:
StackMap stack:
aload 0
getfield okhttp3.internal.ws.RealWebSocket.reader:Lokhttp3/internal/ws/WebSocketReader;
invokevirtual okhttp3.internal.ws.WebSocketReader.processNextFrame:()V
2: StackMap locals:
StackMap stack:
aload 0
getfield okhttp3.internal.ws.RealWebSocket.receivedCloseCode:I
iconst_m1
if_icmpeq 1
3: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lokhttp3/internal/ws/RealWebSocket;
Exceptions:
throws java.io.IOException
boolean processNextFrame();
descriptor: ()Z
flags: (0x0000)
Code:
stack=3, locals=2, args_size=1
start local 0 0: aload 0
getfield okhttp3.internal.ws.RealWebSocket.reader:Lokhttp3/internal/ws/WebSocketReader;
invokevirtual okhttp3.internal.ws.WebSocketReader.processNextFrame:()V
1: aload 0
getfield okhttp3.internal.ws.RealWebSocket.receivedCloseCode:I
iconst_m1
if_icmpne 2
iconst_1
ireturn
StackMap locals:
StackMap stack:
2: iconst_0
3: ireturn
4: StackMap locals:
StackMap stack: java.lang.Exception
astore 1
start local 1 5: aload 0
aload 1
aconst_null
invokevirtual okhttp3.internal.ws.RealWebSocket.failWebSocket:(Ljava/lang/Exception;Lokhttp3/Response;)V
6: iconst_0
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lokhttp3/internal/ws/RealWebSocket;
5 7 1 e Ljava/lang/Exception;
Exception table:
from to target type
0 3 4 Class java.lang.Exception
Exceptions:
throws java.io.IOException
void awaitTermination(int, java.util.concurrent.TimeUnit);
descriptor: (ILjava/util/concurrent/TimeUnit;)V
flags: (0x0000)
Code:
stack=4, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield okhttp3.internal.ws.RealWebSocket.executor:Ljava/util/concurrent/ScheduledExecutorService;
iload 1
i2l
aload 2
invokeinterface java.util.concurrent.ScheduledExecutorService.awaitTermination:(JLjava/util/concurrent/TimeUnit;)Z
pop
1: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lokhttp3/internal/ws/RealWebSocket;
0 2 1 timeout I
0 2 2 timeUnit Ljava/util/concurrent/TimeUnit;
Exceptions:
throws java.lang.InterruptedException
MethodParameters:
Name Flags
timeout
timeUnit
void tearDown();
descriptor: ()V
flags: (0x0000)
Code:
stack=4, locals=1, args_size=1
start local 0 0: aload 0
getfield okhttp3.internal.ws.RealWebSocket.cancelFuture:Ljava/util/concurrent/ScheduledFuture;
ifnull 2
1: aload 0
getfield okhttp3.internal.ws.RealWebSocket.cancelFuture:Ljava/util/concurrent/ScheduledFuture;
iconst_0
invokeinterface java.util.concurrent.ScheduledFuture.cancel:(Z)Z
pop
2: StackMap locals:
StackMap stack:
aload 0
getfield okhttp3.internal.ws.RealWebSocket.executor:Ljava/util/concurrent/ScheduledExecutorService;
invokeinterface java.util.concurrent.ScheduledExecutorService.shutdown:()V
3: aload 0
getfield okhttp3.internal.ws.RealWebSocket.executor:Ljava/util/concurrent/ScheduledExecutorService;
ldc 10
getstatic java.util.concurrent.TimeUnit.SECONDS:Ljava/util/concurrent/TimeUnit;
invokeinterface java.util.concurrent.ScheduledExecutorService.awaitTermination:(JLjava/util/concurrent/TimeUnit;)Z
pop
4: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lokhttp3/internal/ws/RealWebSocket;
Exceptions:
throws java.lang.InterruptedException
synchronized int sentPingCount();
descriptor: ()I
flags: (0x0020) ACC_SYNCHRONIZED
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield okhttp3.internal.ws.RealWebSocket.sentPingCount:I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lokhttp3/internal/ws/RealWebSocket;
synchronized int receivedPingCount();
descriptor: ()I
flags: (0x0020) ACC_SYNCHRONIZED
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield okhttp3.internal.ws.RealWebSocket.receivedPingCount:I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lokhttp3/internal/ws/RealWebSocket;
synchronized int receivedPongCount();
descriptor: ()I
flags: (0x0020) ACC_SYNCHRONIZED
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield okhttp3.internal.ws.RealWebSocket.receivedPongCount:I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lokhttp3/internal/ws/RealWebSocket;
public void onReadMessage(java.lang.String);
descriptor: (Ljava/lang/String;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield okhttp3.internal.ws.RealWebSocket.listener:Lokhttp3/WebSocketListener;
aload 0
aload 1
invokevirtual okhttp3.WebSocketListener.onMessage:(Lokhttp3/WebSocket;Ljava/lang/String;)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lokhttp3/internal/ws/RealWebSocket;
0 2 1 text Ljava/lang/String;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
text
public void onReadMessage(okio.ByteString);
descriptor: (Lokio/ByteString;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield okhttp3.internal.ws.RealWebSocket.listener:Lokhttp3/WebSocketListener;
aload 0
aload 1
invokevirtual okhttp3.WebSocketListener.onMessage:(Lokhttp3/WebSocket;Lokio/ByteString;)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lokhttp3/internal/ws/RealWebSocket;
0 2 1 bytes Lokio/ByteString;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
bytes
public synchronized void onReadPing(okio.ByteString);
descriptor: (Lokio/ByteString;)V
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield okhttp3.internal.ws.RealWebSocket.failed:Z
ifne 1
aload 0
getfield okhttp3.internal.ws.RealWebSocket.enqueuedClose:Z
ifeq 2
aload 0
getfield okhttp3.internal.ws.RealWebSocket.messageAndCloseQueue:Ljava/util/ArrayDeque;
invokevirtual java.util.ArrayDeque.isEmpty:()Z
ifeq 2
StackMap locals:
StackMap stack:
1: return
2: StackMap locals:
StackMap stack:
aload 0
getfield okhttp3.internal.ws.RealWebSocket.pongQueue:Ljava/util/ArrayDeque;
aload 1
invokevirtual java.util.ArrayDeque.add:(Ljava/lang/Object;)Z
pop
3: aload 0
invokevirtual okhttp3.internal.ws.RealWebSocket.runWriter:()V
4: aload 0
dup
getfield okhttp3.internal.ws.RealWebSocket.receivedPingCount:I
iconst_1
iadd
putfield okhttp3.internal.ws.RealWebSocket.receivedPingCount:I
5: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lokhttp3/internal/ws/RealWebSocket;
0 6 1 payload Lokio/ByteString;
MethodParameters:
Name Flags
payload
public synchronized void onReadPong(okio.ByteString);
descriptor: (Lokio/ByteString;)V
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
dup
getfield okhttp3.internal.ws.RealWebSocket.receivedPongCount:I
iconst_1
iadd
putfield okhttp3.internal.ws.RealWebSocket.receivedPongCount:I
1: aload 0
iconst_0
putfield okhttp3.internal.ws.RealWebSocket.awaitingPong:Z
2: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lokhttp3/internal/ws/RealWebSocket;
0 3 1 buffer Lokio/ByteString;
MethodParameters:
Name Flags
buffer
public void onReadClose(int, java.lang.String);
descriptor: (ILjava/lang/String;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=5, args_size=3
start local 0 start local 1 start local 2 0: iload 1
iconst_m1
if_icmpne 1
new java.lang.IllegalArgumentException
dup
invokespecial java.lang.IllegalArgumentException.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
aconst_null
astore 3
start local 3 2: aload 0
dup
astore 4
monitorenter
3: aload 0
getfield okhttp3.internal.ws.RealWebSocket.receivedCloseCode:I
iconst_m1
if_icmpeq 4
new java.lang.IllegalStateException
dup
ldc "already closed"
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals: okhttp3.internal.ws.RealWebSocket$Streams okhttp3.internal.ws.RealWebSocket
StackMap stack:
aload 0
iload 1
putfield okhttp3.internal.ws.RealWebSocket.receivedCloseCode:I
5: aload 0
aload 2
putfield okhttp3.internal.ws.RealWebSocket.receivedCloseReason:Ljava/lang/String;
6: aload 0
getfield okhttp3.internal.ws.RealWebSocket.enqueuedClose:Z
ifeq 11
aload 0
getfield okhttp3.internal.ws.RealWebSocket.messageAndCloseQueue:Ljava/util/ArrayDeque;
invokevirtual java.util.ArrayDeque.isEmpty:()Z
ifeq 11
7: aload 0
getfield okhttp3.internal.ws.RealWebSocket.streams:Lokhttp3/internal/ws/RealWebSocket$Streams;
astore 3
8: aload 0
aconst_null
putfield okhttp3.internal.ws.RealWebSocket.streams:Lokhttp3/internal/ws/RealWebSocket$Streams;
9: aload 0
getfield okhttp3.internal.ws.RealWebSocket.cancelFuture:Ljava/util/concurrent/ScheduledFuture;
ifnull 10
aload 0
getfield okhttp3.internal.ws.RealWebSocket.cancelFuture:Ljava/util/concurrent/ScheduledFuture;
iconst_0
invokeinterface java.util.concurrent.ScheduledFuture.cancel:(Z)Z
pop
10: StackMap locals:
StackMap stack:
aload 0
getfield okhttp3.internal.ws.RealWebSocket.executor:Ljava/util/concurrent/ScheduledExecutorService;
invokeinterface java.util.concurrent.ScheduledExecutorService.shutdown:()V
11: StackMap locals:
StackMap stack:
aload 4
monitorexit
12: goto 15
StackMap locals:
StackMap stack: java.lang.Throwable
13: aload 4
monitorexit
14: athrow
15: StackMap locals:
StackMap stack:
aload 0
getfield okhttp3.internal.ws.RealWebSocket.listener:Lokhttp3/WebSocketListener;
aload 0
iload 1
aload 2
invokevirtual okhttp3.WebSocketListener.onClosing:(Lokhttp3/WebSocket;ILjava/lang/String;)V
16: aload 3
ifnull 22
17: aload 0
getfield okhttp3.internal.ws.RealWebSocket.listener:Lokhttp3/WebSocketListener;
aload 0
iload 1
aload 2
invokevirtual okhttp3.WebSocketListener.onClosed:(Lokhttp3/WebSocket;ILjava/lang/String;)V
18: goto 22
StackMap locals:
StackMap stack: java.lang.Throwable
19: astore 4
20: aload 3
invokestatic okhttp3.internal.Util.closeQuietly:(Ljava/io/Closeable;)V
21: aload 4
athrow
22: StackMap locals:
StackMap stack:
aload 3
invokestatic okhttp3.internal.Util.closeQuietly:(Ljava/io/Closeable;)V
23: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 24 0 this Lokhttp3/internal/ws/RealWebSocket;
0 24 1 code I
0 24 2 reason Ljava/lang/String;
2 24 3 toClose Lokhttp3/internal/ws/RealWebSocket$Streams;
Exception table:
from to target type
3 12 13 any
13 14 13 any
15 19 19 any
MethodParameters:
Name Flags
code
reason
public boolean send(java.lang.String);
descriptor: (Ljava/lang/String;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 1
ifnonnull 1
new java.lang.NullPointerException
dup
ldc "text == null"
invokespecial java.lang.NullPointerException.<init>:(Ljava/lang/String;)V
athrow
1: StackMap locals:
StackMap stack:
aload 0
aload 1
invokestatic okio.ByteString.encodeUtf8:(Ljava/lang/String;)Lokio/ByteString;
iconst_1
invokevirtual okhttp3.internal.ws.RealWebSocket.send:(Lokio/ByteString;I)Z
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lokhttp3/internal/ws/RealWebSocket;
0 2 1 text Ljava/lang/String;
MethodParameters:
Name Flags
text
public boolean send(okio.ByteString);
descriptor: (Lokio/ByteString;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 1
ifnonnull 1
new java.lang.NullPointerException
dup
ldc "bytes == null"
invokespecial java.lang.NullPointerException.<init>:(Ljava/lang/String;)V
athrow
1: StackMap locals:
StackMap stack:
aload 0
aload 1
iconst_2
invokevirtual okhttp3.internal.ws.RealWebSocket.send:(Lokio/ByteString;I)Z
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lokhttp3/internal/ws/RealWebSocket;
0 2 1 bytes Lokio/ByteString;
MethodParameters:
Name Flags
bytes
private synchronized boolean send(okio.ByteString, int);
descriptor: (Lokio/ByteString;I)Z
flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
Code:
stack=5, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield okhttp3.internal.ws.RealWebSocket.failed:Z
ifne 1
aload 0
getfield okhttp3.internal.ws.RealWebSocket.enqueuedClose:Z
ifeq 2
StackMap locals:
StackMap stack:
1: iconst_0
ireturn
2: StackMap locals:
StackMap stack:
aload 0
getfield okhttp3.internal.ws.RealWebSocket.queueSize:J
aload 1
invokevirtual okio.ByteString.size:()I
i2l
ladd
ldc 16777216
lcmp
ifle 5
3: aload 0
sipush 1001
aconst_null
invokevirtual okhttp3.internal.ws.RealWebSocket.close:(ILjava/lang/String;)Z
pop
4: iconst_0
ireturn
5: StackMap locals:
StackMap stack:
aload 0
dup
getfield okhttp3.internal.ws.RealWebSocket.queueSize:J
aload 1
invokevirtual okio.ByteString.size:()I
i2l
ladd
putfield okhttp3.internal.ws.RealWebSocket.queueSize:J
6: aload 0
getfield okhttp3.internal.ws.RealWebSocket.messageAndCloseQueue:Ljava/util/ArrayDeque;
new okhttp3.internal.ws.RealWebSocket$Message
dup
iload 2
aload 1
invokespecial okhttp3.internal.ws.RealWebSocket$Message.<init>:(ILokio/ByteString;)V
invokevirtual java.util.ArrayDeque.add:(Ljava/lang/Object;)Z
pop
7: aload 0
invokevirtual okhttp3.internal.ws.RealWebSocket.runWriter:()V
8: iconst_1
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lokhttp3/internal/ws/RealWebSocket;
0 9 1 data Lokio/ByteString;
0 9 2 formatOpcode I
MethodParameters:
Name Flags
data
formatOpcode
synchronized boolean pong(okio.ByteString);
descriptor: (Lokio/ByteString;)Z
flags: (0x0020) ACC_SYNCHRONIZED
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield okhttp3.internal.ws.RealWebSocket.failed:Z
ifne 1
aload 0
getfield okhttp3.internal.ws.RealWebSocket.enqueuedClose:Z
ifeq 2
aload 0
getfield okhttp3.internal.ws.RealWebSocket.messageAndCloseQueue:Ljava/util/ArrayDeque;
invokevirtual java.util.ArrayDeque.isEmpty:()Z
ifeq 2
StackMap locals:
StackMap stack:
1: iconst_0
ireturn
2: StackMap locals:
StackMap stack:
aload 0
getfield okhttp3.internal.ws.RealWebSocket.pongQueue:Ljava/util/ArrayDeque;
aload 1
invokevirtual java.util.ArrayDeque.add:(Ljava/lang/Object;)Z
pop
3: aload 0
invokevirtual okhttp3.internal.ws.RealWebSocket.runWriter:()V
4: iconst_1
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lokhttp3/internal/ws/RealWebSocket;
0 5 1 payload Lokio/ByteString;
MethodParameters:
Name Flags
payload
public boolean close(int, java.lang.String);
descriptor: (ILjava/lang/String;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
iload 1
aload 2
ldc 60000
invokevirtual okhttp3.internal.ws.RealWebSocket.close:(ILjava/lang/String;J)Z
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lokhttp3/internal/ws/RealWebSocket;
0 1 1 code I
0 1 2 reason Ljava/lang/String;
MethodParameters:
Name Flags
code
reason
synchronized boolean close(int, java.lang.String, long);
descriptor: (ILjava/lang/String;J)Z
flags: (0x0020) ACC_SYNCHRONIZED
Code:
stack=7, locals=6, args_size=4
start local 0 start local 1 start local 2 start local 3 0: iload 1
invokestatic okhttp3.internal.ws.WebSocketProtocol.validateCloseCode:(I)V
1: aconst_null
astore 5
start local 5 2: aload 2
ifnull 6
3: aload 2
invokestatic okio.ByteString.encodeUtf8:(Ljava/lang/String;)Lokio/ByteString;
astore 5
4: aload 5
invokevirtual okio.ByteString.size:()I
i2l
ldc 123
lcmp
ifle 6
5: new java.lang.IllegalArgumentException
dup
new java.lang.StringBuilder
dup
ldc "reason.size() > 123: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
6: StackMap locals: okio.ByteString
StackMap stack:
aload 0
getfield okhttp3.internal.ws.RealWebSocket.failed:Z
ifne 7
aload 0
getfield okhttp3.internal.ws.RealWebSocket.enqueuedClose:Z
ifeq 8
StackMap locals:
StackMap stack:
7: iconst_0
ireturn
8: StackMap locals:
StackMap stack:
aload 0
iconst_1
putfield okhttp3.internal.ws.RealWebSocket.enqueuedClose:Z
9: aload 0
getfield okhttp3.internal.ws.RealWebSocket.messageAndCloseQueue:Ljava/util/ArrayDeque;
new okhttp3.internal.ws.RealWebSocket$Close
dup
iload 1
aload 5
lload 3
invokespecial okhttp3.internal.ws.RealWebSocket$Close.<init>:(ILokio/ByteString;J)V
invokevirtual java.util.ArrayDeque.add:(Ljava/lang/Object;)Z
pop
10: aload 0
invokevirtual okhttp3.internal.ws.RealWebSocket.runWriter:()V
11: iconst_1
ireturn
end local 5 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lokhttp3/internal/ws/RealWebSocket;
0 12 1 code I
0 12 2 reason Ljava/lang/String;
0 12 3 cancelAfterCloseMillis J
2 12 5 reasonBytes Lokio/ByteString;
MethodParameters:
Name Flags
code
reason
cancelAfterCloseMillis
private void runWriter();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=1, args_size=1
start local 0 0: getstatic okhttp3.internal.ws.RealWebSocket.$assertionsDisabled:Z
ifne 1
aload 0
invokestatic java.lang.Thread.holdsLock:(Ljava/lang/Object;)Z
ifne 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
aload 0
getfield okhttp3.internal.ws.RealWebSocket.executor:Ljava/util/concurrent/ScheduledExecutorService;
ifnull 3
2: aload 0
getfield okhttp3.internal.ws.RealWebSocket.executor:Ljava/util/concurrent/ScheduledExecutorService;
aload 0
getfield okhttp3.internal.ws.RealWebSocket.writerRunnable:Ljava/lang/Runnable;
invokeinterface java.util.concurrent.ScheduledExecutorService.execute:(Ljava/lang/Runnable;)V
3: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lokhttp3/internal/ws/RealWebSocket;
boolean writeOneFrame();
descriptor: ()Z
flags: (0x0000)
Code:
stack=6, locals=11, args_size=1
start local 0 0: aconst_null
astore 3
start local 3 1: iconst_m1
istore 4
start local 4 2: aconst_null
astore 5
start local 5 3: aconst_null
astore 6
start local 6 4: aload 0
dup
astore 7
monitorenter
5: aload 0
getfield okhttp3.internal.ws.RealWebSocket.failed:Z
ifeq 8
6: aload 7
monitorexit
7: iconst_0
ireturn
8: StackMap locals: okhttp3.internal.ws.RealWebSocket top top java.lang.Object int java.lang.String okhttp3.internal.ws.RealWebSocket$Streams okhttp3.internal.ws.RealWebSocket
StackMap stack:
aload 0
getfield okhttp3.internal.ws.RealWebSocket.writer:Lokhttp3/internal/ws/WebSocketWriter;
astore 1
start local 1 9: aload 0
getfield okhttp3.internal.ws.RealWebSocket.pongQueue:Ljava/util/ArrayDeque;
invokevirtual java.util.ArrayDeque.poll:()Ljava/lang/Object;
checkcast okio.ByteString
astore 2
start local 2 10: aload 2
ifnonnull 27
11: aload 0
getfield okhttp3.internal.ws.RealWebSocket.messageAndCloseQueue:Ljava/util/ArrayDeque;
invokevirtual java.util.ArrayDeque.poll:()Ljava/lang/Object;
astore 3
12: aload 3
instanceof okhttp3.internal.ws.RealWebSocket$Close
ifeq 24
13: aload 0
getfield okhttp3.internal.ws.RealWebSocket.receivedCloseCode:I
istore 4
14: aload 0
getfield okhttp3.internal.ws.RealWebSocket.receivedCloseReason:Ljava/lang/String;
astore 5
15: iload 4
iconst_m1
if_icmpeq 20
16: aload 0
getfield okhttp3.internal.ws.RealWebSocket.streams:Lokhttp3/internal/ws/RealWebSocket$Streams;
astore 6
17: aload 0
aconst_null
putfield okhttp3.internal.ws.RealWebSocket.streams:Lokhttp3/internal/ws/RealWebSocket$Streams;
18: aload 0
getfield okhttp3.internal.ws.RealWebSocket.executor:Ljava/util/concurrent/ScheduledExecutorService;
invokeinterface java.util.concurrent.ScheduledExecutorService.shutdown:()V
19: goto 27
20: StackMap locals: okhttp3.internal.ws.RealWebSocket okhttp3.internal.ws.WebSocketWriter okio.ByteString java.lang.Object int java.lang.String okhttp3.internal.ws.RealWebSocket$Streams okhttp3.internal.ws.RealWebSocket
StackMap stack:
aload 0
aload 0
getfield okhttp3.internal.ws.RealWebSocket.executor:Ljava/util/concurrent/ScheduledExecutorService;
new okhttp3.internal.ws.RealWebSocket$CancelRunnable
dup
aload 0
invokespecial okhttp3.internal.ws.RealWebSocket$CancelRunnable.<init>:(Lokhttp3/internal/ws/RealWebSocket;)V
21: aload 3
checkcast okhttp3.internal.ws.RealWebSocket$Close
getfield okhttp3.internal.ws.RealWebSocket$Close.cancelAfterCloseMillis:J
getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
22: invokeinterface java.util.concurrent.ScheduledExecutorService.schedule:(Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;
putfield okhttp3.internal.ws.RealWebSocket.cancelFuture:Ljava/util/concurrent/ScheduledFuture;
23: goto 27
StackMap locals:
StackMap stack:
24: aload 3
ifnonnull 27
25: aload 7
monitorexit
26: iconst_0
ireturn
27: StackMap locals:
StackMap stack:
aload 7
monitorexit
28: goto 31
end local 2 end local 1 StackMap locals: okhttp3.internal.ws.RealWebSocket top top java.lang.Object int java.lang.String okhttp3.internal.ws.RealWebSocket$Streams okhttp3.internal.ws.RealWebSocket
StackMap stack: java.lang.Throwable
29: aload 7
monitorexit
30: athrow
start local 1 start local 2 31: StackMap locals: okhttp3.internal.ws.RealWebSocket okhttp3.internal.ws.WebSocketWriter okio.ByteString java.lang.Object int java.lang.String okhttp3.internal.ws.RealWebSocket$Streams
StackMap stack:
aload 2
ifnull 34
32: aload 1
aload 2
invokevirtual okhttp3.internal.ws.WebSocketWriter.writePong:(Lokio/ByteString;)V
33: goto 54
StackMap locals:
StackMap stack:
34: aload 3
instanceof okhttp3.internal.ws.RealWebSocket$Message
ifeq 47
35: aload 3
checkcast okhttp3.internal.ws.RealWebSocket$Message
getfield okhttp3.internal.ws.RealWebSocket$Message.data:Lokio/ByteString;
astore 7
start local 7 36: aload 1
37: aload 3
checkcast okhttp3.internal.ws.RealWebSocket$Message
getfield okhttp3.internal.ws.RealWebSocket$Message.formatOpcode:I
aload 7
invokevirtual okio.ByteString.size:()I
i2l
38: invokevirtual okhttp3.internal.ws.WebSocketWriter.newMessageSink:(IJ)Lokio/Sink;
invokestatic okio.Okio.buffer:(Lokio/Sink;)Lokio/BufferedSink;
astore 8
start local 8 39: aload 8
aload 7
invokeinterface okio.BufferedSink.write:(Lokio/ByteString;)Lokio/BufferedSink;
pop
40: aload 8
invokeinterface okio.BufferedSink.close:()V
41: aload 0
dup
astore 9
monitorenter
42: aload 0
dup
getfield okhttp3.internal.ws.RealWebSocket.queueSize:J
aload 7
invokevirtual okio.ByteString.size:()I
i2l
lsub
putfield okhttp3.internal.ws.RealWebSocket.queueSize:J
43: aload 9
monitorexit
44: goto 54
StackMap locals: okhttp3.internal.ws.RealWebSocket okhttp3.internal.ws.WebSocketWriter okio.ByteString java.lang.Object int java.lang.String okhttp3.internal.ws.RealWebSocket$Streams okio.ByteString okio.BufferedSink okhttp3.internal.ws.RealWebSocket
StackMap stack: java.lang.Throwable
45: aload 9
monitorexit
46: athrow
end local 8 end local 7 47: StackMap locals:
StackMap stack:
aload 3
instanceof okhttp3.internal.ws.RealWebSocket$Close
ifeq 53
48: aload 3
checkcast okhttp3.internal.ws.RealWebSocket$Close
astore 7
start local 7 49: aload 1
aload 7
getfield okhttp3.internal.ws.RealWebSocket$Close.code:I
aload 7
getfield okhttp3.internal.ws.RealWebSocket$Close.reason:Lokio/ByteString;
invokevirtual okhttp3.internal.ws.WebSocketWriter.writeClose:(ILokio/ByteString;)V
50: aload 6
ifnull 54
51: aload 0
getfield okhttp3.internal.ws.RealWebSocket.listener:Lokhttp3/WebSocketListener;
aload 0
iload 4
aload 5
invokevirtual okhttp3.WebSocketListener.onClosed:(Lokhttp3/WebSocket;ILjava/lang/String;)V
end local 7 52: goto 54
53: StackMap locals:
StackMap stack:
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
54: StackMap locals:
StackMap stack:
aload 6
invokestatic okhttp3.internal.Util.closeQuietly:(Ljava/io/Closeable;)V
55: iconst_1
ireturn
56: StackMap locals:
StackMap stack: java.lang.Throwable
astore 10
57: aload 6
invokestatic okhttp3.internal.Util.closeQuietly:(Ljava/io/Closeable;)V
58: aload 10
athrow
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 59 0 this Lokhttp3/internal/ws/RealWebSocket;
9 29 1 writer Lokhttp3/internal/ws/WebSocketWriter;
31 59 1 writer Lokhttp3/internal/ws/WebSocketWriter;
10 29 2 pong Lokio/ByteString;
31 59 2 pong Lokio/ByteString;
1 59 3 messageOrClose Ljava/lang/Object;
2 59 4 receivedCloseCode I
3 59 5 receivedCloseReason Ljava/lang/String;
4 59 6 streamsToClose Lokhttp3/internal/ws/RealWebSocket$Streams;
36 47 7 data Lokio/ByteString;
39 47 8 sink Lokio/BufferedSink;
49 52 7 close Lokhttp3/internal/ws/RealWebSocket$Close;
Exception table:
from to target type
5 7 29 any
8 26 29 any
27 28 29 any
29 30 29 any
42 44 45 any
45 46 45 any
31 54 56 any
Exceptions:
throws java.io.IOException
void writePingFrame();
descriptor: ()V
flags: (0x0000)
Code:
stack=6, locals=4, args_size=1
start local 0 0: aload 0
dup
astore 3
monitorenter
1: aload 0
getfield okhttp3.internal.ws.RealWebSocket.failed:Z
ifeq 3
aload 3
monitorexit
2: return
3: StackMap locals: okhttp3.internal.ws.RealWebSocket top top okhttp3.internal.ws.RealWebSocket
StackMap stack:
aload 0
getfield okhttp3.internal.ws.RealWebSocket.writer:Lokhttp3/internal/ws/WebSocketWriter;
astore 1
start local 1 4: aload 0
getfield okhttp3.internal.ws.RealWebSocket.awaitingPong:Z
ifeq 5
aload 0
getfield okhttp3.internal.ws.RealWebSocket.sentPingCount:I
goto 6
StackMap locals: okhttp3.internal.ws.RealWebSocket okhttp3.internal.ws.WebSocketWriter top okhttp3.internal.ws.RealWebSocket
StackMap stack:
5: iconst_m1
StackMap locals:
StackMap stack: int
6: istore 2
start local 2 7: aload 0
dup
getfield okhttp3.internal.ws.RealWebSocket.sentPingCount:I
iconst_1
iadd
putfield okhttp3.internal.ws.RealWebSocket.sentPingCount:I
8: aload 0
iconst_1
putfield okhttp3.internal.ws.RealWebSocket.awaitingPong:Z
9: aload 3
monitorexit
10: goto 13
end local 2 end local 1 StackMap locals: okhttp3.internal.ws.RealWebSocket top top okhttp3.internal.ws.RealWebSocket
StackMap stack: java.lang.Throwable
11: aload 3
monitorexit
12: athrow
start local 1 start local 2 13: StackMap locals: okhttp3.internal.ws.RealWebSocket okhttp3.internal.ws.WebSocketWriter int
StackMap stack:
iload 2
iconst_m1
if_icmpeq 19
14: aload 0
new java.net.SocketTimeoutException
dup
new java.lang.StringBuilder
dup
ldc "sent ping but didn't receive pong within "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
15: aload 0
getfield okhttp3.internal.ws.RealWebSocket.pingIntervalMillis:J
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
ldc "ms (after "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
iload 2
iconst_1
isub
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc " successful ping/pongs)"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.net.SocketTimeoutException.<init>:(Ljava/lang/String;)V
16: aconst_null
17: invokevirtual okhttp3.internal.ws.RealWebSocket.failWebSocket:(Ljava/lang/Exception;Lokhttp3/Response;)V
18: return
19: StackMap locals:
StackMap stack:
aload 1
getstatic okio.ByteString.EMPTY:Lokio/ByteString;
invokevirtual okhttp3.internal.ws.WebSocketWriter.writePing:(Lokio/ByteString;)V
20: goto 23
StackMap locals:
StackMap stack: java.io.IOException
21: astore 3
start local 3 22: aload 0
aload 3
aconst_null
invokevirtual okhttp3.internal.ws.RealWebSocket.failWebSocket:(Ljava/lang/Exception;Lokhttp3/Response;)V
end local 3 23: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 24 0 this Lokhttp3/internal/ws/RealWebSocket;
4 11 1 writer Lokhttp3/internal/ws/WebSocketWriter;
13 24 1 writer Lokhttp3/internal/ws/WebSocketWriter;
7 11 2 failedPing I
13 24 2 failedPing I
22 23 3 e Ljava/io/IOException;
Exception table:
from to target type
1 2 11 any
3 10 11 any
11 12 11 any
19 20 21 Class java.io.IOException
public void failWebSocket(java.lang.Exception, okhttp3.Response);
descriptor: (Ljava/lang/Exception;Lokhttp3/Response;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=3, args_size=3
start local 0 0: new java.lang.Error
dup
ldc "Unresolved compilation problem: \n\tNullable cannot be resolved to a type\n"
invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
athrow
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lokhttp3/internal/ws/RealWebSocket;
RuntimeInvisibleTypeAnnotations:
METHOD_FORMAL_PARAMETER
Nullable()
RuntimeInvisibleParameterAnnotations:
0:
1:
Nullable()
MethodParameters:
Name Flags
e
response
}
SourceFile: "RealWebSocket.java"
NestMembers:
okhttp3.internal.ws.RealWebSocket$1 okhttp3.internal.ws.RealWebSocket$2 okhttp3.internal.ws.RealWebSocket$CancelRunnable okhttp3.internal.ws.RealWebSocket$Close okhttp3.internal.ws.RealWebSocket$Message okhttp3.internal.ws.RealWebSocket$PingRunnable okhttp3.internal.ws.RealWebSocket$Streams
InnerClasses:
public final Builder = okhttp3.OkHttpClient$Builder of okhttp3.OkHttpClient
public Builder = okhttp3.Request$Builder of okhttp3.Request
okhttp3.internal.ws.RealWebSocket$1
okhttp3.internal.ws.RealWebSocket$2
final CancelRunnable = okhttp3.internal.ws.RealWebSocket$CancelRunnable of okhttp3.internal.ws.RealWebSocket
final Close = okhttp3.internal.ws.RealWebSocket$Close of okhttp3.internal.ws.RealWebSocket
final Message = okhttp3.internal.ws.RealWebSocket$Message of okhttp3.internal.ws.RealWebSocket
private final PingRunnable = okhttp3.internal.ws.RealWebSocket$PingRunnable of okhttp3.internal.ws.RealWebSocket
public abstract Streams = okhttp3.internal.ws.RealWebSocket$Streams of okhttp3.internal.ws.RealWebSocket
public abstract FrameCallback = okhttp3.internal.ws.WebSocketReader$FrameCallback of okhttp3.internal.ws.WebSocketReader