Files
runelite/runescape-client/src/main/java/BufferedSink.java
2021-12-09 15:21:52 +02:00

268 lines
8.3 KiB
Java

import java.io.IOException;
import java.io.OutputStream;
import net.runelite.mapping.Export;
import net.runelite.mapping.Implements;
import net.runelite.mapping.ObfuscatedGetter;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
import net.runelite.rs.ScriptOpcodes;
@ObfuscatedName("mb")
@Implements("BufferedSink")
public class BufferedSink implements Runnable {
@ObfuscatedName("mk")
@ObfuscatedGetter(
intValue = -719644833
)
@Export("menuY")
static int menuY;
@ObfuscatedName("c")
@Export("thread")
Thread thread;
@ObfuscatedName("b")
@Export("outputStream")
OutputStream outputStream;
@ObfuscatedName("p")
@ObfuscatedGetter(
intValue = 345474963
)
@Export("capacity")
int capacity;
@ObfuscatedName("m")
@Export("buffer")
byte[] buffer;
@ObfuscatedName("t")
@ObfuscatedGetter(
intValue = 2075331091
)
@Export("position")
int position;
@ObfuscatedName("s")
@ObfuscatedGetter(
intValue = 154665981
)
@Export("limit")
int limit;
@ObfuscatedName("j")
@Export("exception")
IOException exception;
@ObfuscatedName("w")
@Export("closed")
boolean closed;
BufferedSink(OutputStream var1, int var2) {
this.position = 0; // L: 193
this.limit = 0; // L: 194
this.outputStream = var1; // L: 199
this.capacity = var2 + 1; // L: 200
this.buffer = new byte[this.capacity]; // L: 201
this.thread = new Thread(this); // L: 202
this.thread.setDaemon(true); // L: 203
this.thread.start(); // L: 204
} // L: 205
@ObfuscatedName("c")
@ObfuscatedSignature(
descriptor = "(I)Z",
garbageValue = "1810348727"
)
@Export("isClosed")
boolean isClosed() {
if (this.closed) { // L: 208
try {
this.outputStream.close(); // L: 210
if (this.exception == null) {
this.exception = new IOException(""); // L: 211
}
} catch (IOException var2) { // L: 213
if (this.exception == null) { // L: 214
this.exception = new IOException(var2);
}
}
return true; // L: 216
} else {
return false; // L: 218
}
}
@ObfuscatedName("b")
@ObfuscatedSignature(
descriptor = "([BIII)V",
garbageValue = "103815641"
)
@Export("write")
void write(byte[] var1, int var2, int var3) throws IOException {
if (var3 >= 0 && var2 >= 0 && var3 + var2 <= var1.length) { // L: 268
synchronized(this) { // L: 269
if (this.exception != null) { // L: 270
throw new IOException(this.exception.toString());
} else {
int var5;
if (this.position <= this.limit) { // L: 272
var5 = this.capacity - this.limit + this.position - 1;
} else {
var5 = this.position - this.limit - 1; // L: 273
}
if (var5 < var3) {
throw new IOException(""); // L: 274
} else {
if (var3 + this.limit <= this.capacity) { // L: 275
System.arraycopy(var1, var2, this.buffer, this.limit, var3); // L: 276
} else {
int var6 = this.capacity - this.limit; // L: 279
System.arraycopy(var1, var2, this.buffer, this.limit, var6); // L: 280
System.arraycopy(var1, var6 + var2, this.buffer, 0, var3 - var6); // L: 281
}
this.limit = (var3 + this.limit) % this.capacity; // L: 283
this.notifyAll(); // L: 284
}
}
}
} else {
throw new IOException();
}
} // L: 286
@ObfuscatedName("p")
@ObfuscatedSignature(
descriptor = "(I)V",
garbageValue = "784609340"
)
@Export("close")
void close() {
synchronized(this) { // L: 289
this.closed = true; // L: 290
this.notifyAll(); // L: 291
} // L: 292
try {
this.thread.join(); // L: 294
} catch (InterruptedException var3) { // L: 296
}
} // L: 297
public void run() {
do {
int var1;
synchronized(this) { // L: 224
while (true) {
if (this.exception != null) { // L: 226
return;
}
if (this.position <= this.limit) { // L: 227
var1 = this.limit - this.position;
} else {
var1 = this.capacity - this.position + this.limit; // L: 228
}
if (var1 > 0) { // L: 229
break;
}
try {
this.outputStream.flush(); // L: 231
} catch (IOException var11) { // L: 233
this.exception = var11; // L: 234
return; // L: 235
}
if (this.isClosed()) { // L: 237
return;
}
try {
this.wait(); // L: 239
} catch (InterruptedException var12) { // L: 241
}
}
}
try {
if (var1 + this.position <= this.capacity) { // L: 245
this.outputStream.write(this.buffer, this.position, var1); // L: 246
} else {
int var7 = this.capacity - this.position; // L: 249
this.outputStream.write(this.buffer, this.position, var7); // L: 250
this.outputStream.write(this.buffer, 0, var1 - var7); // L: 251
}
} catch (IOException var10) { // L: 254
IOException var2 = var10;
synchronized(this) { // L: 255
this.exception = var2; // L: 256
return; // L: 257
}
}
synchronized(this) { // L: 260
this.position = (var1 + this.position) % this.capacity; // L: 261
} // L: 262
} while(!this.isClosed()); // L: 263
}
@ObfuscatedName("h")
@ObfuscatedSignature(
descriptor = "(ILbn;ZI)I",
garbageValue = "-1853043366"
)
static int method6551(int var0, Script var1, boolean var2) {
Widget var3 = var2 ? WorldMapArea.scriptDotWidget : Messages.scriptActiveWidget; // L: 1113
if (var0 == ScriptOpcodes.CC_GETSCROLLX) { // L: 1114
Interpreter.Interpreter_intStack[++IsaacCipher.Interpreter_intStackSize - 1] = var3.scrollX; // L: 1115
return 1; // L: 1116
} else if (var0 == ScriptOpcodes.CC_GETSCROLLY) { // L: 1118
Interpreter.Interpreter_intStack[++IsaacCipher.Interpreter_intStackSize - 1] = var3.scrollY; // L: 1119
return 1; // L: 1120
} else if (var0 == ScriptOpcodes.CC_GETTEXT) { // L: 1122
Interpreter.Interpreter_stringStack[++class13.Interpreter_stringStackSize - 1] = var3.text; // L: 1123
return 1; // L: 1124
} else if (var0 == ScriptOpcodes.CC_GETSCROLLWIDTH) { // L: 1126
Interpreter.Interpreter_intStack[++IsaacCipher.Interpreter_intStackSize - 1] = var3.scrollWidth; // L: 1127
return 1; // L: 1128
} else if (var0 == ScriptOpcodes.CC_GETSCROLLHEIGHT) { // L: 1130
Interpreter.Interpreter_intStack[++IsaacCipher.Interpreter_intStackSize - 1] = var3.scrollHeight; // L: 1131
return 1; // L: 1132
} else if (var0 == ScriptOpcodes.CC_GETMODELZOOM) { // L: 1134
Interpreter.Interpreter_intStack[++IsaacCipher.Interpreter_intStackSize - 1] = var3.modelZoom; // L: 1135
return 1; // L: 1136
} else if (var0 == ScriptOpcodes.CC_GETMODELANGLE_X) { // L: 1138
Interpreter.Interpreter_intStack[++IsaacCipher.Interpreter_intStackSize - 1] = var3.modelAngleX; // L: 1139
return 1; // L: 1140
} else if (var0 == ScriptOpcodes.CC_GETMODELANGLE_Z) { // L: 1142
Interpreter.Interpreter_intStack[++IsaacCipher.Interpreter_intStackSize - 1] = var3.modelAngleZ; // L: 1143
return 1; // L: 1144
} else if (var0 == ScriptOpcodes.CC_GETMODELANGLE_Y) { // L: 1146
Interpreter.Interpreter_intStack[++IsaacCipher.Interpreter_intStackSize - 1] = var3.modelAngleY; // L: 1147
return 1; // L: 1148
} else if (var0 == ScriptOpcodes.CC_GETTRANS) { // L: 1150
Interpreter.Interpreter_intStack[++IsaacCipher.Interpreter_intStackSize - 1] = var3.transparencyTop; // L: 1151
return 1; // L: 1152
} else if (var0 == 1610) { // L: 1154
Interpreter.Interpreter_intStack[++IsaacCipher.Interpreter_intStackSize - 1] = var3.transparencyBot; // L: 1155
return 1; // L: 1156
} else if (var0 == ScriptOpcodes.CC_GETCOLOUR) { // L: 1158
Interpreter.Interpreter_intStack[++IsaacCipher.Interpreter_intStackSize - 1] = var3.color; // L: 1159
return 1; // L: 1160
} else if (var0 == ScriptOpcodes.CC_GETFILLCOLOUR) { // L: 1162
Interpreter.Interpreter_intStack[++IsaacCipher.Interpreter_intStackSize - 1] = var3.color2; // L: 1163
return 1; // L: 1164
} else if (var0 == 1613) { // L: 1166
Interpreter.Interpreter_intStack[++IsaacCipher.Interpreter_intStackSize - 1] = var3.fillMode.rsOrdinal(); // L: 1167
return 1; // L: 1168
} else if (var0 == ScriptOpcodes.CC_GETMODELTRANSPARENT) { // L: 1170
Interpreter.Interpreter_intStack[++IsaacCipher.Interpreter_intStackSize - 1] = var3.modelTransparency ? 1 : 0; // L: 1171
return 1; // L: 1172
} else if (var0 != 1615 && var0 != 1616) { // L: 1174
return 2; // L: 1178
} else {
++IsaacCipher.Interpreter_intStackSize; // L: 1175
return 1; // L: 1176
}
}
}