Checkpoint

This commit is contained in:
Robin E.R. Davies
2026-02-11 12:28:11 -05:00
parent da8a61b5d3
commit cf7f499994
3 changed files with 35 additions and 8 deletions
+35 -5
View File
@@ -682,6 +682,15 @@ JSON_MAP_REFERENCE(Vst3ControlChangedBody, value)
JSON_MAP_REFERENCE(Vst3ControlChangedBody, state) JSON_MAP_REFERENCE(Vst3ControlChangedBody, state)
JSON_MAP_END() JSON_MAP_END()
class PiPedalSocketHandler;
namespace {
using PfnMessageHandler = void (PiPedalSocketHandler::*)(int replyTo, json_reader *pReader);
inline static unordered_map<std::string, PfnMessageHandler> socket_messageHandlers;
}
class PiPedalSocketHandler : public SocketHandler, public IPiPedalModelSubscriber, public std::enable_shared_from_this<PiPedalSocketHandler> class PiPedalSocketHandler : public SocketHandler, public IPiPedalModelSubscriber, public std::enable_shared_from_this<PiPedalSocketHandler>
{ {
private: private:
@@ -1161,6 +1170,26 @@ public:
/***********************/ /***********************/
class MessageRegistration {
public:
MessageRegistration(const std::string&messageName,PfnMessageHandler pfnMessageHandler ) {
socket_messageHandlers[messageName] = pfnMessageHandler;
}
};
#define REGISTER_MESSAGE_HANDLER(MESSAGE_NAME) \
static inline MessageRegistration r_##MESSAGE_NAME{#MESSAGE_NAME,&PiPedalSocketHandler::handle_##MESSAGE_NAME};
void handle_setControl(int replyTo, json_reader*pReader) {
ControlChangedBody message;
pReader->read(&message);
this->model.SetControl(message.clientId_, message.instanceId_, message.symbol_, message.value_);
}
static inline MessageRegistration r_xxx{ "setControl", &PiPedalSocketHandler::handle_setControl};
REGISTER_MESSAGE_HANDLER(setControl)
void handleMessage(int reply, int replyTo, const std::string &message, json_reader *pReader) void handleMessage(int reply, int replyTo, const std::string &message, json_reader *pReader)
{ {
if (reply != -1) if (reply != -1)
@@ -1201,13 +1230,14 @@ public:
{ {
this->SendError(replyTo, "Server has shut down."); this->SendError(replyTo, "Server has shut down.");
} }
if (message == "setControl")
auto ffHandler = socket_messageHandlers.find(message);
if (ffHandler != socket_messageHandlers.end())
{ {
ControlChangedBody message; (this->*(ffHandler->second))(replyTo,pReader);
pReader->read(&message); return;
this->model.SetControl(message.clientId_, message.instanceId_, message.symbol_, message.value_);
} }
else if (message == "previewControl") if (message == "previewControl")
{ {
ControlChangedBody message; ControlChangedBody message;
pReader->read(&message); pReader->read(&message);
@@ -1,6 +1,5 @@
import { Pedalboard, ControlValue } from "./Pedalboard.tsx"; import { Pedalboard, ControlValue } from "./Pedalboard.tsx";
import JackServerSettings from "./JackServerSettings.tsx";
import JackConfiguration from "./Jack.tsx"; import JackConfiguration from "./Jack.tsx";
@@ -64,8 +64,6 @@ interface ChannelRouterSettingsPreset {
settings: ChannelRouterSettings; settings: ChannelRouterSettings;
} }
let LEFT_LEFT_PRESET_ID = -2;
let RIGHT_STEREO_PRESET_ID = -3;
let channelRouterPresets: ChannelRouterSettingsPreset[] = [ let channelRouterPresets: ChannelRouterSettingsPreset[] = [
{ {