Clean up a little, add gitignore

This commit is contained in:
Chris Marsh 2017-06-29 09:38:07 -07:00
parent 1a83c2872c
commit 22e34d48c9
4 changed files with 29 additions and 16 deletions

1
.gitignore vendored Normal file
View file

@ -0,0 +1 @@
/build*/

View file

@ -1,18 +1,29 @@
#include "discord-rpc.h"
#include <stdint.h>
#include <stdio.h>
#include <string.h>
// todo: think about making per-platform versions of this whole file, or wrapping the platform specific parts -- win32 for first version
// I just want the basics
#define WIN32_LEAN_AND_MEAN
#define NOMCX
#define NOSERVICE
#define NOIME
#include <windows.h>
namespace {
struct RpcMessageFrame {
uint32_t length;
char message[64 * 1024 - sizeof(uint32_t)];
};
static const wchar_t* PipeName = L"\\\\.\\pipe\\DiscordRpcServer";
static HANDLE PipeHandle{ INVALID_HANDLE_VALUE };
static char ApplicationId[64]{};
static DiscordEventHandlers Handlers{};
static char MessageBuffer[64 * 1024];
static RpcMessageFrame Frame;
// if only there was a standard library function for this
size_t StringCopy(char* dest, const char* src, size_t maxBytes) {
@ -52,19 +63,19 @@ void EscapeString(char*& dest, const char* src)
*dest++ = '\\';
*dest++ = 'b';
break;
case '\f': // Form feed(ascii code 0C)
case '\f':
*dest++ = '\\';
*dest++ = 'f';
break;
case '\n': // New line
case '\n':
*dest++ = '\\';
*dest++ = 'n';
break;
case '\r': // Carriage return
case '\r':
*dest++ = '\\';
*dest++ = 'r';
break;
case '\t': // Tab
case '\t':
*dest++ = '\\';
*dest++ = 't';
break;
@ -239,6 +250,8 @@ void CloseConnection()
}
}
} // anonymous namespace
void Discord_Initialize(const char* applicationId, DiscordEventHandlers* handlers)
{
StringCopy(ApplicationId, applicationId, sizeof(ApplicationId));
@ -273,14 +286,12 @@ void Discord_UpdatePresence(const DiscordRichPresence* presence)
}
}
int32_t* totalLength = (int32_t*)MessageBuffer;
char* jsonStart = MessageBuffer + sizeof(int32_t);
char* jsonWrite = jsonStart;
char* jsonWrite = Frame.message;
JsonWriteRichPresenceObj(jsonWrite, presence);
*totalLength = sizeof(int32_t) + (jsonWrite - jsonStart);
BOOL success = WriteFile(PipeHandle, MessageBuffer, *totalLength, nullptr, nullptr);
Frame.length = sizeof(uint32_t) + (jsonWrite - Frame.message);
BOOL success = WriteFile(PipeHandle, &Frame, Frame.length, nullptr, nullptr);
if (!success) {
CloseConnection();

View file

@ -1,11 +1,11 @@
#pragma once
#include <time.h>
#include <stdint.h>
struct DiscordRichPresence {
const char* state;
const char* details;
time_t startTimestamp;
time_t endTimestamp;
int64_t startTimestamp;
int64_t endTimestamp;
const char* largeImageKey;
const char* largeImageText;
const char* smallImageKey;

View file

@ -1,4 +1,5 @@
#include <stdio.h>
#include <time.h>
#include "discord-rpc.h"