Bitmasks were wrong

This commit is contained in:
Manevolent
2018-08-10 23:37:45 -04:00
parent 798f84689f
commit 7f6f6c79d2
8 changed files with 70 additions and 46 deletions
@@ -27,7 +27,7 @@ public class PacketBody5Pong extends PacketBody {
@Override
public void read(ByteBuffer buffer) {
packetId = buffer.getShort() & 0x000000FFFFF;
packetId = (buffer.getShort() & 0xFFFF);
}
@Override
@@ -27,12 +27,12 @@ public class PacketBody6Ack extends PacketBody {
@Override
public void read(ByteBuffer buffer) {
packetId = buffer.getShort() & 0x0000FFFF;
packetId = buffer.getShort() & 0xFFFF;
}
@Override
public void write(ByteBuffer buffer) {
buffer.putShort((short) (getPacketId() & 0xFFFFFF));
buffer.putShort((short) (getPacketId() & 0xFFFF));
}
@Override
@@ -27,12 +27,12 @@ public class PacketBody7AckLow extends PacketBody {
@Override
public void read(ByteBuffer buffer) {
packetId = buffer.getShort() & 0x0000FFFF;
packetId = buffer.getShort() & 0xFFFF;
}
@Override
public void write(ByteBuffer buffer) {
buffer.putShort((short) (getPacketId() & 0xFFFFFF));
buffer.putShort((short) (getPacketId() & 0xFFFF));
}
@Override
@@ -39,7 +39,7 @@ public class LocalClientHandlerConnecting extends LocalClientHandler {
randomBytes = new byte[4];
random.nextBytes(randomBytes);
step.setRandom(randomBytes);
step.setTimestamp((int) ((System.currentTimeMillis() / 1000L) & 0x000000FFFFFF));
step.setTimestamp((int) ((System.currentTimeMillis() / 1000L) & 0xFFFF));
packet.setStep(step);
sendInit1(packet);
@@ -3,12 +3,14 @@ package com.github.manevolent.ts3j.protocol.packet.statistics;
import com.github.manevolent.ts3j.protocol.Packet;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
public class PacketStatistics {
private final List<DataPoint> sentPacketList = new LinkedList<>();
private final List<DataPoint> receivedPacketList = new LinkedList<>();
private final List<DataPoint> sentPacketList = Collections.synchronizedList(new ArrayList<>());
private final List<DataPoint> receivedPacketList = Collections.synchronizedList(new ArrayList<>());
private int sentBytes;
private int sentPackets;
@@ -51,17 +53,21 @@ public class PacketStatistics {
public int getSentPacketsLastSecond() {
long now = System.nanoTime() - 1_000_000_000L;
return (int) sentPacketList.stream()
.filter(x -> x.getTime() >= now)
.count();
synchronized (sentPacketList) {
return (int) sentPacketList.stream()
.filter(x -> x.getTime() >= now)
.count();
}
}
public int getSentPacketsLastMinute() {
long now = System.nanoTime() - 1_000_000_000L;
return (int) sentPacketList.stream()
.filter(x -> x.getTime() >= now)
.count();
synchronized (sentPacketList) {
return (int) sentPacketList.stream()
.filter(x -> x.getTime() >= now)
.count();
}
}
public int getReceivedPackets() {
@@ -71,17 +77,21 @@ public class PacketStatistics {
public int getReceivedPacketsLastSecond() {
long now = System.nanoTime() - 1_000_000_000L;
return (int) receivedPacketList.stream()
.filter(x -> x.getTime() >= now)
.count();
synchronized (receivedPacketList) {
return (int) receivedPacketList.stream()
.filter(x -> x.getTime() >= now)
.count();
}
}
public int getReceivedPacketsLastMinute() {
long now = System.nanoTime() - 60_000_000_000L;
return (int) receivedPacketList.stream()
.filter(x -> x.getTime() >= now)
.count();
synchronized (receivedPacketList) {
return (int) receivedPacketList.stream()
.filter(x -> x.getTime() >= now)
.count();
}
}
@@ -92,41 +102,50 @@ public class PacketStatistics {
public int getSentBytesLastMinute() {
long now = System.nanoTime() - 60_000_000_000L;
return sentPacketList.stream()
.filter(x -> x.getTime() >= now)
.map(DataPoint::getSize)
.reduce((a, b) -> a + b)
.orElse(0);
synchronized (sentPacketList) {
return sentPacketList.stream()
.filter(x -> x.getTime() >= now)
.map(DataPoint::getSize)
.reduce((a, b) -> a + b)
.orElse(0);
}
}
public int getSentBytesLastSecond() {
long now = System.nanoTime() - 1_000_000_000L;
return sentPacketList.stream()
.filter(x -> x.getTime() >= now)
.map(DataPoint::getSize)
.reduce((a, b) -> a + b)
.orElse(0);
synchronized (sentPacketList) {
return sentPacketList.stream()
.filter(x -> x.getTime() >= now)
.map(DataPoint::getSize)
.reduce((a, b) -> a + b)
.orElse(0);
}
}
public int getReceivedBytesLastMinute() {
long now = System.nanoTime() - 60_000_000_000L;
return receivedPacketList.stream()
.filter(x -> x.getTime() >= now)
.map(DataPoint::getSize)
.reduce((a, b) -> a + b)
.orElse(0);
synchronized (receivedPacketList) {
return receivedPacketList.stream()
.filter(x -> x.getTime() >= now)
.map(DataPoint::getSize)
.reduce((a, b) -> a + b)
.orElse(0);
}
}
public int getReceivedBytesLastSecond() {
long now = System.nanoTime() - 1_000_000_000L;
return receivedPacketList.stream()
.filter(x -> x.getTime() >= now)
.map(DataPoint::getSize)
.reduce((a, b) -> a + b)
.orElse(0);
synchronized (receivedPacketList) {
return receivedPacketList.stream()
.filter(x -> x.getTime() >= now)
.map(DataPoint::getSize)
.reduce((a, b) -> a + b)
.orElse(0);
}
}
private final class DataPoint {
@@ -39,7 +39,7 @@ public class PacketTransformation {
temporaryByteBuffer.put((byte) (header.getRole() == ProtocolRole.SERVER ? 0x30 : 0x31));
temporaryByteBuffer.put((byte) (header.getType().getIndex() & 0xFF));
temporaryByteBuffer.putInt(header.getGeneration() & 0x000000FFFFFF);
temporaryByteBuffer.putInt(header.getGeneration());
temporaryByteBuffer.put(ivStruct);
@@ -269,9 +269,12 @@ public abstract class AbstractTeamspeakClientSocket
)
);
break;
/*case PING:
counter = localSendCounter.get(PacketBodyType.PING).current();
break;*/
case PING:
for (int i = 0 ; i < 8000; i ++)
counter = localSendCounter.get(PacketBodyType.PING).next();
counter = localSendCounter.get(PacketBodyType.PING).next();
break;
case INIT1:
counter = new Pair<>(101, 0);
break;
@@ -674,7 +677,7 @@ public abstract class AbstractTeamspeakClientSocket
lastResponse = System.currentTimeMillis();
response = pingQueue.get(((PacketBody5Pong)packet.getBody()).getPacketId());
if (response == null) {
Ts3Debugging.debug("Unrecognized PONG: " + ((PacketBody6Ack) packet.getBody()).getPacketId());
Ts3Debugging.debug("Unrecognized PONG: " + ((PacketBody5Pong) packet.getBody()).getPacketId());
} else {
lastResponse = System.currentTimeMillis();
}
@@ -15,6 +15,8 @@ import java.net.InetSocketAddress;
import java.util.Base64;
import java.util.Random;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeoutException;
import static org.junit.Assert.assertEquals;
@@ -151,7 +153,7 @@ public class ServerConnectionTest {
client.subscribeAll();
client.waitForState(ClientConnectionState.DISCONNECTED, 100000000L);
Thread.sleep(1000000L);
} catch (Throwable ex) {
ex.printStackTrace();
}