mirror of
https://github.com/collinsmith/riiablo.git
synced 2025-02-09 10:28:25 +07:00
Improved accuracy of ping calculation #77
This commit is contained in:
parent
cdc73e12d6
commit
3390b544a6
@ -15,20 +15,24 @@ public final class Ping extends Table {
|
||||
public Ping __assign(int _i, ByteBuffer _bb) { __init(_i, _bb); return this; }
|
||||
|
||||
public int tickCount() { int o = __offset(4); return o != 0 ? bb.getInt(o + bb_pos) : 0; }
|
||||
public long time() { int o = __offset(6); return o != 0 ? bb.getLong(o + bb_pos) : 0L; }
|
||||
public long sendTime() { int o = __offset(6); return o != 0 ? bb.getLong(o + bb_pos) : 0L; }
|
||||
public long processTime() { int o = __offset(8); return o != 0 ? bb.getLong(o + bb_pos) : 0L; }
|
||||
|
||||
public static int createPing(FlatBufferBuilder builder,
|
||||
int tickCount,
|
||||
long time) {
|
||||
builder.startObject(2);
|
||||
Ping.addTime(builder, time);
|
||||
long sendTime,
|
||||
long processTime) {
|
||||
builder.startObject(3);
|
||||
Ping.addProcessTime(builder, processTime);
|
||||
Ping.addSendTime(builder, sendTime);
|
||||
Ping.addTickCount(builder, tickCount);
|
||||
return Ping.endPing(builder);
|
||||
}
|
||||
|
||||
public static void startPing(FlatBufferBuilder builder) { builder.startObject(2); }
|
||||
public static void startPing(FlatBufferBuilder builder) { builder.startObject(3); }
|
||||
public static void addTickCount(FlatBufferBuilder builder, int tickCount) { builder.addInt(0, tickCount, 0); }
|
||||
public static void addTime(FlatBufferBuilder builder, long time) { builder.addLong(1, time, 0L); }
|
||||
public static void addSendTime(FlatBufferBuilder builder, long sendTime) { builder.addLong(1, sendTime, 0L); }
|
||||
public static void addProcessTime(FlatBufferBuilder builder, long processTime) { builder.addLong(2, processTime, 0L); }
|
||||
public static int endPing(FlatBufferBuilder builder) {
|
||||
int o = builder.endObject();
|
||||
return o;
|
||||
|
@ -1,22 +1,23 @@
|
||||
package com.riiablo.engine.client;
|
||||
|
||||
import com.google.flatbuffers.FlatBufferBuilder;
|
||||
import java.io.OutputStream;
|
||||
import java.nio.channels.Channels;
|
||||
import java.nio.channels.WritableByteChannel;
|
||||
|
||||
import com.artemis.annotations.All;
|
||||
import com.artemis.annotations.Wire;
|
||||
import com.artemis.systems.IntervalSystem;
|
||||
|
||||
import com.badlogic.gdx.Gdx;
|
||||
import com.badlogic.gdx.net.Socket;
|
||||
import com.badlogic.gdx.utils.TimeUtils;
|
||||
|
||||
import com.riiablo.Riiablo;
|
||||
import com.riiablo.net.packet.d2gs.D2GS;
|
||||
import com.riiablo.net.packet.d2gs.D2GSData;
|
||||
import com.riiablo.net.packet.d2gs.Ping;
|
||||
|
||||
import java.io.OutputStream;
|
||||
import java.nio.channels.Channels;
|
||||
import java.nio.channels.WritableByteChannel;
|
||||
|
||||
@All
|
||||
public class Pinger extends IntervalSystem {
|
||||
private static final String TAG = "Pinger";
|
||||
@ -40,7 +41,7 @@ public class Pinger extends IntervalSystem {
|
||||
@Override
|
||||
protected void processSystem() {
|
||||
FlatBufferBuilder builder = new FlatBufferBuilder(0);
|
||||
int dataOffset = Ping.createPing(builder, tick++, TimeUtils.millis());
|
||||
int dataOffset = Ping.createPing(builder, tick++, TimeUtils.millis(), 0);
|
||||
int root = D2GS.createD2GS(builder, D2GSData.Ping, dataOffset);
|
||||
D2GS.finishSizePrefixedD2GSBuffer(builder, root);
|
||||
|
||||
@ -54,6 +55,6 @@ public class Pinger extends IntervalSystem {
|
||||
}
|
||||
|
||||
public void Ping(Ping packet) {
|
||||
Riiablo.ping = TimeUtils.timeSinceMillis(packet.time());
|
||||
Riiablo.ping = TimeUtils.millis() - packet.sendTime() - packet.processTime();
|
||||
}
|
||||
}
|
||||
|
@ -23,7 +23,8 @@ table Disconnect {
|
||||
table Ping {
|
||||
// request
|
||||
tickCount:int32;
|
||||
time:int64;
|
||||
sendTime:int64;
|
||||
processTime:int64;
|
||||
|
||||
// response
|
||||
}
|
@ -1,12 +1,34 @@
|
||||
package com.riiablo.server.d2gs;
|
||||
|
||||
import com.google.flatbuffers.FlatBufferBuilder;
|
||||
import java.io.IOException;
|
||||
import java.net.InetAddress;
|
||||
import java.net.UnknownHostException;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.nio.channels.Channels;
|
||||
import java.nio.channels.ReadableByteChannel;
|
||||
import java.nio.channels.WritableByteChannel;
|
||||
import java.text.DateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Calendar;
|
||||
import java.util.Collection;
|
||||
import java.util.concurrent.ArrayBlockingQueue;
|
||||
import java.util.concurrent.BlockingQueue;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import org.apache.commons.cli.CommandLine;
|
||||
import org.apache.commons.cli.CommandLineParser;
|
||||
import org.apache.commons.cli.DefaultParser;
|
||||
import org.apache.commons.cli.Options;
|
||||
import org.apache.commons.lang3.ArrayUtils;
|
||||
|
||||
import com.artemis.ComponentMapper;
|
||||
import com.artemis.World;
|
||||
import com.artemis.WorldConfiguration;
|
||||
import com.artemis.WorldConfigurationBuilder;
|
||||
import com.artemis.utils.BitVector;
|
||||
import net.mostlyoriginal.api.event.common.EventSystem;
|
||||
|
||||
import com.badlogic.gdx.Application;
|
||||
import com.badlogic.gdx.ApplicationAdapter;
|
||||
import com.badlogic.gdx.Gdx;
|
||||
@ -22,6 +44,7 @@ import com.badlogic.gdx.net.Socket;
|
||||
import com.badlogic.gdx.utils.GdxRuntimeException;
|
||||
import com.badlogic.gdx.utils.IntIntMap;
|
||||
import com.badlogic.gdx.utils.TimeUtils;
|
||||
|
||||
import com.riiablo.COFs;
|
||||
import com.riiablo.Files;
|
||||
import com.riiablo.Riiablo;
|
||||
@ -64,6 +87,7 @@ import com.riiablo.net.packet.d2gs.CursorToStore;
|
||||
import com.riiablo.net.packet.d2gs.D2GSData;
|
||||
import com.riiablo.net.packet.d2gs.Disconnect;
|
||||
import com.riiablo.net.packet.d2gs.GroundToCursor;
|
||||
import com.riiablo.net.packet.d2gs.Ping;
|
||||
import com.riiablo.net.packet.d2gs.StoreToCursor;
|
||||
import com.riiablo.net.packet.d2gs.SwapBeltItem;
|
||||
import com.riiablo.net.packet.d2gs.SwapBodyItem;
|
||||
@ -71,30 +95,6 @@ import com.riiablo.net.packet.d2gs.SwapStoreItem;
|
||||
import com.riiablo.save.CharData;
|
||||
import com.riiablo.util.DebugUtils;
|
||||
|
||||
import net.mostlyoriginal.api.event.common.EventSystem;
|
||||
|
||||
import org.apache.commons.cli.CommandLine;
|
||||
import org.apache.commons.cli.CommandLineParser;
|
||||
import org.apache.commons.cli.DefaultParser;
|
||||
import org.apache.commons.cli.Options;
|
||||
import org.apache.commons.lang3.ArrayUtils;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.InetAddress;
|
||||
import java.net.UnknownHostException;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.nio.channels.Channels;
|
||||
import java.nio.channels.ReadableByteChannel;
|
||||
import java.nio.channels.WritableByteChannel;
|
||||
import java.text.DateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Calendar;
|
||||
import java.util.Collection;
|
||||
import java.util.concurrent.ArrayBlockingQueue;
|
||||
import java.util.concurrent.BlockingQueue;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
public class D2GS extends ApplicationAdapter {
|
||||
private static final String TAG = "D2GS";
|
||||
|
||||
@ -535,9 +535,13 @@ public class D2GS extends ApplicationAdapter {
|
||||
}
|
||||
|
||||
private void Ping(Packet packet) {
|
||||
// Ping ping = (Ping) packet.data.data(new Ping());
|
||||
packet.id = (1 << packet.id);
|
||||
outPackets.offer(packet);
|
||||
Ping ping = (Ping) packet.data.data(new Ping());
|
||||
FlatBufferBuilder builder = new FlatBufferBuilder(0);
|
||||
int dataOffset = Ping.createPing(builder, ping.tickCount(), ping.sendTime(), TimeUtils.millis() - packet.time);
|
||||
int root = com.riiablo.net.packet.d2gs.D2GS.createD2GS(builder, D2GSData.Ping, dataOffset);
|
||||
com.riiablo.net.packet.d2gs.D2GS.finishSizePrefixedD2GSBuffer(builder, root);
|
||||
Packet response = Packet.obtain(1 << packet.id, builder.dataBuffer());
|
||||
outPackets.offer(response);
|
||||
}
|
||||
|
||||
private void Synchronize(Packet packet) {
|
||||
|
@ -1,19 +1,22 @@
|
||||
package com.riiablo.server.d2gs;
|
||||
|
||||
import com.google.flatbuffers.ByteBufferUtil;
|
||||
import java.nio.ByteBuffer;
|
||||
|
||||
import com.badlogic.gdx.utils.TimeUtils;
|
||||
|
||||
import com.riiablo.net.packet.d2gs.D2GS;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
|
||||
public class Packet {
|
||||
public int id;
|
||||
public long time;
|
||||
public ByteBuffer buffer;
|
||||
public D2GS data;
|
||||
|
||||
public static Packet obtain(int id, ByteBuffer buffer) {
|
||||
Packet packet = new Packet();
|
||||
packet.id = id;
|
||||
packet.time = TimeUtils.millis();
|
||||
packet.buffer = buffer;
|
||||
packet.data = D2GS.getRootAsD2GS(ByteBufferUtil.removeSizePrefix(buffer));
|
||||
return packet;
|
||||
|
Loading…
Reference in New Issue
Block a user