Use caching okhttp client for worldclient

This commit is contained in:
Adam
2019-09-27 23:40:56 -04:00
parent 9c5b36cec7
commit f49670cd5b
4 changed files with 26 additions and 10 deletions

View File

@@ -26,21 +26,30 @@
package net.runelite.http.api.worlds; package net.runelite.http.api.worlds;
import com.google.gson.JsonParseException; import com.google.gson.JsonParseException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import javax.inject.Inject;
import net.runelite.http.api.RuneLiteAPI; import net.runelite.http.api.RuneLiteAPI;
import okhttp3.HttpUrl; import okhttp3.HttpUrl;
import okhttp3.OkHttpClient;
import okhttp3.Request; import okhttp3.Request;
import okhttp3.Response; import okhttp3.Response;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class WorldClient public class WorldClient
{ {
private static final Logger logger = LoggerFactory.getLogger(WorldClient.class); private static final Logger logger = LoggerFactory.getLogger(WorldClient.class);
private final OkHttpClient client;
@Inject
public WorldClient(OkHttpClient client)
{
this.client = client;
}
public WorldResult lookupWorlds() throws IOException public WorldResult lookupWorlds() throws IOException
{ {
HttpUrl url = RuneLiteAPI.getApiBase().newBuilder() HttpUrl url = RuneLiteAPI.getApiBase().newBuilder()
@@ -53,7 +62,7 @@ public class WorldClient
.url(url) .url(url)
.build(); .build();
try (Response response = RuneLiteAPI.CLIENT.newCall(request).execute()) try (Response response = client.newCall(request).execute())
{ {
if (!response.isSuccessful()) if (!response.isSuccessful())
{ {

View File

@@ -31,9 +31,9 @@ import lombok.extern.slf4j.Slf4j;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.GameState; import net.runelite.api.GameState;
import net.runelite.api.events.GameStateChanged; import net.runelite.api.events.GameStateChanged;
import net.runelite.client.events.SessionOpen;
import net.runelite.client.config.ConfigManager; import net.runelite.client.config.ConfigManager;
import net.runelite.client.eventbus.Subscribe; import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.events.SessionOpen;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.util.WorldUtil; import net.runelite.client.util.WorldUtil;
@@ -55,7 +55,9 @@ public class DefaultWorldPlugin extends Plugin
@Inject @Inject
private DefaultWorldConfig config; private DefaultWorldConfig config;
private final WorldClient worldClient = new WorldClient(); @Inject
private WorldClient worldClient;
private int worldCache; private int worldCache;
private boolean worldChangeRequired; private boolean worldChangeRequired;

View File

@@ -140,6 +140,9 @@ public class WorldHopperPlugin extends Plugin
@Inject @Inject
private WorldHopperPingOverlay worldHopperOverlay; private WorldHopperPingOverlay worldHopperOverlay;
@Inject
private WorldClient worldClient;
private ScheduledExecutorService hopperExecutorService; private ScheduledExecutorService hopperExecutorService;
private NavigationButton navButton; private NavigationButton navButton;
@@ -508,7 +511,7 @@ public class WorldHopperPlugin extends Plugin
try try
{ {
WorldResult worldResult = new WorldClient().lookupWorlds(); WorldResult worldResult = worldClient.lookupWorlds();
if (worldResult != null) if (worldResult != null)
{ {

View File

@@ -33,6 +33,8 @@ import java.util.Random;
import java.util.function.Supplier; import java.util.function.Supplier;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.runelite.http.api.RuneLiteAPI;
import net.runelite.http.api.worlds.World;
import net.runelite.http.api.worlds.WorldClient; import net.runelite.http.api.worlds.WorldClient;
@Slf4j @Slf4j
@@ -51,11 +53,11 @@ class HostSupplier implements Supplier<String>
try try
{ {
List<String> newHosts = new WorldClient() List<String> newHosts = new WorldClient(RuneLiteAPI.CLIENT)
.lookupWorlds() .lookupWorlds()
.getWorlds() .getWorlds()
.stream() .stream()
.map(i -> i.getAddress()) .map(World::getAddress)
.collect(Collectors.toList()); .collect(Collectors.toList());
Collections.shuffle(newHosts, random); Collections.shuffle(newHosts, random);