diff --git a/.gitignore b/.gitignore index e60f201..b08b54a 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ server/src/main/native/com_codedisaster_steamworks_* build/ obj/ target/ +bin/ Makefile *.exp *.lib @@ -22,6 +23,9 @@ Makefile # IDE files .idea/ *.iml +.project +.classpath +.settings/ # build tools build-natives/.vs/ @@ -30,4 +34,4 @@ premake5* # test resources steam_appid.txt -encryptedappticket.key \ No newline at end of file +encryptedappticket.key diff --git a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamApps.java b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamApps.java index adb1040..27dbd51 100644 --- a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamApps.java +++ b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamApps.java @@ -1,7 +1,6 @@ package com.codedisaster.steamworks; -@SuppressWarnings("unused") -public class SteamApps extends SteamInterface { +public class SteamApps extends SteamInterfaceImpl { public SteamApps() { diff --git a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamController.java b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamController.java index f20fbba..aae7feb 100644 --- a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamController.java +++ b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamController.java @@ -1,7 +1,7 @@ package com.codedisaster.steamworks; @SuppressWarnings({ "unused", "UnusedReturnValue" }) -public class SteamController extends SteamInterface { +public class SteamController extends SteamInterfaceImpl { public enum Pad { Left, diff --git a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamFriends.java b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamFriends.java index f78117e..dab0775 100644 --- a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamFriends.java +++ b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamFriends.java @@ -3,7 +3,7 @@ import java.util.Collection; @SuppressWarnings({ "unused", "UnusedReturnValue" }) -public class SteamFriends extends SteamInterface { +public class SteamFriends extends SteamInterfaceImpl { public enum FriendRelationship { None, diff --git a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamHTTP.java b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamHTTP.java index 17e2bd4..69f5587 100644 --- a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamHTTP.java +++ b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamHTTP.java @@ -3,7 +3,7 @@ import java.nio.ByteBuffer; @SuppressWarnings({ "unused", "UnusedReturnValue" }) -public class SteamHTTP extends SteamInterface { +public class SteamHTTP extends SteamInterfaceImpl { public enum HTTPMethod { Invalid, diff --git a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamInterface.java b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamInterface.java index 79b0138..d3882b9 100644 --- a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamInterface.java +++ b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamInterface.java @@ -1,55 +1,11 @@ package com.codedisaster.steamworks; -import java.nio.Buffer; +/** + * Public interface for any native steam interfaces, implemented by + * {@link SteamInterfaceImpl}, which is package-private. + */ +public interface SteamInterface { -abstract class SteamInterface { - - protected long callback; - - SteamInterface() { - this(0L); - } - - SteamInterface(long callback) { - this.callback = callback; - } - - void setCallback(long callback) { - this.callback = callback; - } - - public void dispose() { - deleteCallback(callback); - } - - void checkBuffer(Buffer buffer) throws SteamException { - if (!buffer.isDirect()) { - throw new SteamException("Direct buffer required."); - } - } - - void checkArray(byte[] array, int length) throws SteamException { - if (array.length < length) { - throw new SteamException("Array too small, " + array.length + " found but " + length + " expected."); - } - } - - /* - The native API allows passing NULL char pointers in some places, but - the wrapper code generated by jnigen doesn't check for null Strings. - So we silently convert to an empty string here, and check again before - calling the native function. - */ - static String maybeNull(String argument) { - return (argument != null) ? argument : ""; - } - - /*JNI - #include "SteamCallbackAdapter.h" - */ - - protected static native void deleteCallback(long callback); /* - delete (SteamCallbackAdapter*) callback; - */ + void dispose(); } diff --git a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamInterfaceImpl.java b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamInterfaceImpl.java new file mode 100644 index 0000000..894e456 --- /dev/null +++ b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamInterfaceImpl.java @@ -0,0 +1,81 @@ +package com.codedisaster.steamworks; + +import java.nio.Buffer; + +/** + * + */ +abstract class SteamInterfaceImpl implements SteamInterface { + + protected long callback; + + SteamInterfaceImpl() { + this(0L); + } + + SteamInterfaceImpl(long callback) { + this.callback = callback; + } + + void setCallback(long callback) { + this.callback = callback; + } + + @Override + public void dispose() { + deleteCallback(callback); + } + + static void checkBuffer(Buffer buffer) throws SteamException { + if (!buffer.isDirect()) { + throw new SteamException("Direct buffer required."); + } + } + + static void checkArray(byte[] array, int length) throws SteamException { + if (array.length < length) { + throw new SteamException("Array too small, " + array.length + " found but " + length + " expected."); + } + } + + /* + * The native API allows passing NULL char pointers in some places, but the + * wrapper code generated by jnigen doesn't check for null Strings. So we + * silently convert to an empty string here, and check again before calling the + * native function. + */ + static String maybeNull(String argument) { + return (argument != null) ? argument : ""; + } + + /* + * JNI #include "SteamCallbackAdapter.h" + */ + + protected static native void deleteCallback(long callback); + /* + * delete (SteamCallbackAdapter*) callback; + */ + +} diff --git a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamMatchmaking.java b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamMatchmaking.java index bc4abfa..7e4196b 100644 --- a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamMatchmaking.java +++ b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamMatchmaking.java @@ -3,7 +3,7 @@ import java.nio.ByteBuffer; @SuppressWarnings({ "unused", "UnusedReturnValue" }) -public class SteamMatchmaking extends SteamInterface { +public class SteamMatchmaking extends SteamInterfaceImpl { public enum LobbyType { Private, diff --git a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamMatchmakingPingResponse.java b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamMatchmakingPingResponse.java index d409790..48327ec 100644 --- a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamMatchmakingPingResponse.java +++ b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamMatchmakingPingResponse.java @@ -1,6 +1,6 @@ package com.codedisaster.steamworks; -public abstract class SteamMatchmakingPingResponse extends SteamInterface { +public abstract class SteamMatchmakingPingResponse extends SteamInterfaceImpl { protected SteamMatchmakingPingResponse() { super(~0L); diff --git a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamMatchmakingPlayersResponse.java b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamMatchmakingPlayersResponse.java index ddebeb5..f76b8cd 100644 --- a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamMatchmakingPlayersResponse.java +++ b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamMatchmakingPlayersResponse.java @@ -1,6 +1,6 @@ package com.codedisaster.steamworks; -public abstract class SteamMatchmakingPlayersResponse extends SteamInterface { +public abstract class SteamMatchmakingPlayersResponse extends SteamInterfaceImpl { protected SteamMatchmakingPlayersResponse() { super(~0L); diff --git a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamMatchmakingRulesResponse.java b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamMatchmakingRulesResponse.java index 01121e5..9c3a80d 100644 --- a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamMatchmakingRulesResponse.java +++ b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamMatchmakingRulesResponse.java @@ -1,6 +1,6 @@ package com.codedisaster.steamworks; -public abstract class SteamMatchmakingRulesResponse extends SteamInterface { +public abstract class SteamMatchmakingRulesResponse extends SteamInterfaceImpl { protected SteamMatchmakingRulesResponse() { super(~0L); diff --git a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamMatchmakingServerListResponse.java b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamMatchmakingServerListResponse.java index 3852a75..1949090 100644 --- a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamMatchmakingServerListResponse.java +++ b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamMatchmakingServerListResponse.java @@ -1,6 +1,6 @@ package com.codedisaster.steamworks; -public abstract class SteamMatchmakingServerListResponse extends SteamInterface { +public abstract class SteamMatchmakingServerListResponse extends SteamInterfaceImpl { public enum Response { ServerResponded, diff --git a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamMatchmakingServers.java b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamMatchmakingServers.java index df652e2..c054068 100644 --- a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamMatchmakingServers.java +++ b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamMatchmakingServers.java @@ -1,7 +1,7 @@ package com.codedisaster.steamworks; @SuppressWarnings("unused") -public class SteamMatchmakingServers extends SteamInterface { +public class SteamMatchmakingServers extends SteamInterfaceImpl { public SteamMatchmakingServers() { super(-1); diff --git a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamNetworking.java b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamNetworking.java index 933e876..32345e1 100644 --- a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamNetworking.java +++ b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamNetworking.java @@ -3,7 +3,7 @@ import java.nio.ByteBuffer; @SuppressWarnings({ "unused", "UnusedReturnValue" }) -public class SteamNetworking extends SteamInterface { +public class SteamNetworking extends SteamInterfaceImpl { public enum P2PSend { Unreliable, diff --git a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamRemoteStorage.java b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamRemoteStorage.java index a9ae88d..2cee030 100644 --- a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamRemoteStorage.java +++ b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamRemoteStorage.java @@ -3,7 +3,7 @@ import java.nio.ByteBuffer; @SuppressWarnings({ "unused", "UnusedReturnValue" }) -public class SteamRemoteStorage extends SteamInterface { +public class SteamRemoteStorage extends SteamInterfaceImpl { public enum RemoteStoragePlatform { None(0), diff --git a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamScreenshots.java b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamScreenshots.java index 3247705..86cc7b2 100644 --- a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamScreenshots.java +++ b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamScreenshots.java @@ -3,7 +3,7 @@ import java.nio.ByteBuffer; @SuppressWarnings("unused") -public class SteamScreenshots extends SteamInterface { +public class SteamScreenshots extends SteamInterfaceImpl { public SteamScreenshots(SteamScreenshotsCallback callback) { super(SteamScreenshotsNative.createCallback(new SteamScreenshotsCallbackAdapter(callback))); diff --git a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamUGC.java b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamUGC.java index 9cfc945..9c02a00 100644 --- a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamUGC.java +++ b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamUGC.java @@ -4,7 +4,7 @@ import java.util.EnumSet; @SuppressWarnings({ "unused", "UnusedReturnValue" }) -public class SteamUGC extends SteamInterface { +public class SteamUGC extends SteamInterfaceImpl { public enum UserUGCList { Published, diff --git a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamUser.java b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamUser.java index 8b0f43c..52aa3c2 100644 --- a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamUser.java +++ b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamUser.java @@ -3,7 +3,7 @@ import java.nio.ByteBuffer; @SuppressWarnings({ "unused", "UnusedReturnValue" }) -public class SteamUser extends SteamInterface { +public class SteamUser extends SteamInterfaceImpl { public enum VoiceResult { OK, diff --git a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamUserStats.java b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamUserStats.java index 96e4b59..d03eca9 100644 --- a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamUserStats.java +++ b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamUserStats.java @@ -1,7 +1,7 @@ package com.codedisaster.steamworks; @SuppressWarnings({ "unused", "UnusedReturnValue" }) -public class SteamUserStats extends SteamInterface { +public class SteamUserStats extends SteamInterfaceImpl { public enum LeaderboardDataRequest { Global, diff --git a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamUtils.java b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamUtils.java index 89a9950..cbd1e87 100644 --- a/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamUtils.java +++ b/java-wrapper/src/main/java/com/codedisaster/steamworks/SteamUtils.java @@ -3,7 +3,7 @@ import java.nio.ByteBuffer; @SuppressWarnings("unused") -public class SteamUtils extends SteamInterface { +public class SteamUtils extends SteamInterfaceImpl { public enum SteamAPICallFailure { None(-1), diff --git a/server/src/main/java/com/codedisaster/steamworks/SteamEncryptedAppTicket.java b/server/src/main/java/com/codedisaster/steamworks/SteamEncryptedAppTicket.java index 9d021f2..9efe6a0 100644 --- a/server/src/main/java/com/codedisaster/steamworks/SteamEncryptedAppTicket.java +++ b/server/src/main/java/com/codedisaster/steamworks/SteamEncryptedAppTicket.java @@ -2,7 +2,7 @@ import java.nio.ByteBuffer; -public class SteamEncryptedAppTicket extends SteamInterface { +public class SteamEncryptedAppTicket extends SteamInterfaceImpl { public static final int SymmetricKeyLen = 32; diff --git a/server/src/main/java/com/codedisaster/steamworks/SteamGameServer.java b/server/src/main/java/com/codedisaster/steamworks/SteamGameServer.java index a5dfad3..606d5c4 100644 --- a/server/src/main/java/com/codedisaster/steamworks/SteamGameServer.java +++ b/server/src/main/java/com/codedisaster/steamworks/SteamGameServer.java @@ -3,7 +3,7 @@ import java.nio.ByteBuffer; @SuppressWarnings("unused") -public class SteamGameServer extends SteamInterface { +public class SteamGameServer extends SteamInterfaceImpl { public enum DenyReason { Invalid, diff --git a/server/src/main/java/com/codedisaster/steamworks/SteamGameServerHTTP.java b/server/src/main/java/com/codedisaster/steamworks/SteamGameServerHTTP.java index 9d79cff..79bea43 100644 --- a/server/src/main/java/com/codedisaster/steamworks/SteamGameServerHTTP.java +++ b/server/src/main/java/com/codedisaster/steamworks/SteamGameServerHTTP.java @@ -1,6 +1,5 @@ package com.codedisaster.steamworks; -@SuppressWarnings("unused") public class SteamGameServerHTTP extends SteamHTTP { public SteamGameServerHTTP(SteamHTTPCallback callback) { diff --git a/server/src/main/java/com/codedisaster/steamworks/SteamGameServerStats.java b/server/src/main/java/com/codedisaster/steamworks/SteamGameServerStats.java index 2b43f59..f365c42 100644 --- a/server/src/main/java/com/codedisaster/steamworks/SteamGameServerStats.java +++ b/server/src/main/java/com/codedisaster/steamworks/SteamGameServerStats.java @@ -1,7 +1,7 @@ package com.codedisaster.steamworks; @SuppressWarnings("unused") -public class SteamGameServerStats extends SteamInterface { +public class SteamGameServerStats extends SteamInterfaceImpl { public SteamGameServerStats(SteamGameServerStatsCallback callback) { super(SteamGameServerStatsNative.createCallback(new SteamGameServerStatsCallbackAdapter(callback)));