diff --git a/examples/button-clicker/Assets/DiscordRpc.cs b/examples/button-clicker/Assets/DiscordRpc.cs index 80d6d10..92b5c6e 100644 --- a/examples/button-clicker/Assets/DiscordRpc.cs +++ b/examples/button-clicker/Assets/DiscordRpc.cs @@ -78,7 +78,7 @@ public class DiscordRpc Ignore = 2 } - public static void Initialize(string applicationId, ref EventHandlers handlers, bool autoRegister, string optionalSteamId, int pipe = 0) + public static void Initialize(string applicationId, ref EventHandlers handlers, bool autoRegister, string optionalSteamId) { Callbacks = handlers; @@ -90,11 +90,11 @@ public class DiscordRpc staticEventHandlers.spectateCallback += DiscordRpc.SpectateCallback; staticEventHandlers.requestCallback += DiscordRpc.RequestCallback; - InitializeInternal(applicationId, ref staticEventHandlers, autoRegister, optionalSteamId, pipe); + InitializeInternal(applicationId, ref staticEventHandlers, autoRegister, optionalSteamId); } [DllImport("discord-rpc", EntryPoint = "Discord_Initialize", CallingConvention = CallingConvention.Cdecl)] - static extern void InitializeInternal(string applicationId, ref EventHandlers handlers, bool autoRegister, string optionalSteamId, int pipe); + static extern void InitializeInternal(string applicationId, ref EventHandlers handlers, bool autoRegister, string optionalSteamId); [DllImport("discord-rpc", EntryPoint = "Discord_Shutdown", CallingConvention = CallingConvention.Cdecl)] public static extern void Shutdown(); diff --git a/examples/send-presence/send-presence.c b/examples/send-presence/send-presence.c index 155372a..5449cf8 100644 --- a/examples/send-presence/send-presence.c +++ b/examples/send-presence/send-presence.c @@ -129,7 +129,7 @@ static void discordInit() handlers.joinGame = handleDiscordJoin; handlers.spectateGame = handleDiscordSpectate; handlers.joinRequest = handleDiscordJoinRequest; - Discord_Initialize(APPLICATION_ID, &handlers, 1, NULL, 0); + Discord_Initialize(APPLICATION_ID, &handlers, 1, NULL); } static void gameLoop() diff --git a/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/Private/DiscordRpcBlueprint.cpp b/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/Private/DiscordRpcBlueprint.cpp index 1e40457..95388df 100644 --- a/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/Private/DiscordRpcBlueprint.cpp +++ b/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/Private/DiscordRpcBlueprint.cpp @@ -82,8 +82,7 @@ static void JoinRequestHandler(const DiscordUser* request) void UDiscordRpc::Initialize(const FString& applicationId, bool autoRegister, - const FString& optionalSteamId, - int pipe) + const FString& optionalSteamId) { self = this; IsConnected = false; @@ -103,7 +102,7 @@ void UDiscordRpc::Initialize(const FString& applicationId, auto appId = StringCast(*applicationId); auto steamId = StringCast(*optionalSteamId); Discord_Initialize( - (const char*)appId.Get(), &handlers, autoRegister, (const char*)steamId.Get(), pipe); + (const char*)appId.Get(), &handlers, autoRegister, (const char*)steamId.Get()); } void UDiscordRpc::Shutdown() diff --git a/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/Public/DiscordRpcBlueprint.h b/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/Public/DiscordRpcBlueprint.h index 4dbe1d7..17e2f9b 100644 --- a/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/Public/DiscordRpcBlueprint.h +++ b/examples/unrealstatus/Plugins/discordrpc/Source/DiscordRpc/Public/DiscordRpcBlueprint.h @@ -99,8 +99,7 @@ public: Category = "Discord") void Initialize(const FString& applicationId, bool autoRegister, - const FString& optionalSteamId, - int optionalPipeNumber); + const FString& optionalSteamId); UFUNCTION(BlueprintCallable, meta = (DisplayName = "Shut down connection", Keywords = "Discord rpc"), diff --git a/include/discord_rpc.h b/include/discord_rpc.h index 6c60756..3e1441e 100644 --- a/include/discord_rpc.h +++ b/include/discord_rpc.h @@ -64,8 +64,7 @@ typedef struct DiscordEventHandlers { DISCORD_EXPORT void Discord_Initialize(const char* applicationId, DiscordEventHandlers* handlers, int autoRegister, - const char* optionalSteamId, - int optionalPipeNumber); + const char* optionalSteamId); DISCORD_EXPORT void Discord_Shutdown(void); /* checks for incoming messages, dispatches callbacks */ diff --git a/src/connection.h b/src/connection.h index cd08038..a8f99b9 100644 --- a/src/connection.h +++ b/src/connection.h @@ -12,7 +12,7 @@ struct BaseConnection { static BaseConnection* Create(); static void Destroy(BaseConnection*&); bool isOpen{false}; - bool Open(int pipe); + bool Open(); bool Close(); bool Write(const void* data, size_t length); bool Read(void* data, size_t length); diff --git a/src/connection_unix.cpp b/src/connection_unix.cpp index 518ea94..85dace3 100644 --- a/src/connection_unix.cpp +++ b/src/connection_unix.cpp @@ -49,7 +49,7 @@ static const char* GetTempPath() c = nullptr; } -bool BaseConnection::Open(int pipe) +bool BaseConnection::Open() { const char* tempPath = GetTempPath(); auto self = reinterpret_cast(this); @@ -62,7 +62,8 @@ bool BaseConnection::Open(int pipe) int optval = 1; setsockopt(self->sock, SOL_SOCKET, SO_NOSIGPIPE, &optval, sizeof(optval)); #endif - for (int pipeNum = pipe; pipeNum < 10; ++pipeNum) { + + for (int pipeNum = 0; pipeNum < 10; ++pipeNum) { snprintf( PipeAddr.sun_path, sizeof(PipeAddr.sun_path), "%s/discord-ipc-%d", tempPath, pipeNum); int err = connect(self->sock, (const sockaddr*)&PipeAddr, sizeof(PipeAddr)); diff --git a/src/connection_win.cpp b/src/connection_win.cpp index e94670e..2dd2750 100644 --- a/src/connection_win.cpp +++ b/src/connection_win.cpp @@ -6,7 +6,6 @@ #define NOIME #include #include -#include int GetProcessId() { @@ -31,11 +30,11 @@ static BaseConnectionWin Connection; c = nullptr; } -bool BaseConnection::Open(int pipe) +bool BaseConnection::Open() { wchar_t pipeName[]{L"\\\\?\\pipe\\discord-ipc-0"}; const size_t pipeDigit = sizeof(pipeName) / sizeof(wchar_t) - 2; - pipeName[pipeDigit] += pipe; + pipeName[pipeDigit] = L'0'; auto self = reinterpret_cast(this); for (;;) { self->pipe = ::CreateFileW( diff --git a/src/discord_rpc.cpp b/src/discord_rpc.cpp index cd0d711..0392453 100644 --- a/src/discord_rpc.cpp +++ b/src/discord_rpc.cpp @@ -273,8 +273,7 @@ static bool DeregisterForEvent(const char* evtName) extern "C" DISCORD_EXPORT void Discord_Initialize(const char* applicationId, DiscordEventHandlers* handlers, int autoRegister, - const char* optionalSteamId, - int pipe) + const char* optionalSteamId) { IoThread = new (std::nothrow) IoThreadHolder(); if (IoThread == nullptr) { @@ -309,7 +308,7 @@ extern "C" DISCORD_EXPORT void Discord_Initialize(const char* applicationId, return; } - Connection = RpcConnection::Create(applicationId, pipe); + Connection = RpcConnection::Create(applicationId); Connection->onConnect = [](JsonDocument& readyMessage) { Discord_UpdateHandlers(&QueuedHandlers); if (QueuedPresence.length > 0) { diff --git a/src/rpc_connection.cpp b/src/rpc_connection.cpp index fc8b6e1..0933162 100644 --- a/src/rpc_connection.cpp +++ b/src/rpc_connection.cpp @@ -6,11 +6,10 @@ static const int RpcVersion = 1; static RpcConnection Instance; -/*static*/ RpcConnection* RpcConnection::Create(const char* applicationId, int pipe) +/*static*/ RpcConnection* RpcConnection::Create(const char* applicationId) { Instance.connection = BaseConnection::Create(); StringCopy(Instance.appId, applicationId); - Instance.pipe = pipe; return &Instance; } @@ -27,7 +26,7 @@ void RpcConnection::Open() return; } - if (state == State::Disconnected && !connection->Open(Instance.pipe)) { + if (state == State::Disconnected && !connection->Open()) { return; } diff --git a/src/rpc_connection.h b/src/rpc_connection.h index 9a48757..bbdd05c 100644 --- a/src/rpc_connection.h +++ b/src/rpc_connection.h @@ -43,12 +43,11 @@ struct RpcConnection { void (*onConnect)(JsonDocument& message){nullptr}; void (*onDisconnect)(int errorCode, const char* message){nullptr}; char appId[64]{}; - int pipe; int lastErrorCode{0}; char lastErrorMessage[256]{}; RpcConnection::MessageFrame sendFrame; - static RpcConnection* Create(const char* applicationId, int pipe); + static RpcConnection* Create(const char* applicationId); static void Destroy(RpcConnection*&); inline bool IsOpen() const { return state == State::Connected; }