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