From 5cbe109c93b688a91210b96c8c7d4193cd1f9de3 Mon Sep 17 00:00:00 2001 From: Owen Green Date: Tue, 22 Dec 2020 13:26:29 +0000 Subject: [PATCH] Add /flush to force server cache reset with internal Server --- include/wrapper/NonRealtime.hpp | 7 +++++++ release-packaging/Classes/FluidServerObject.sc | 4 ++++ 2 files changed, 11 insertions(+) diff --git a/include/wrapper/NonRealtime.hpp b/include/wrapper/NonRealtime.hpp index adc74d8..dfe8084 100644 --- a/include/wrapper/NonRealtime.hpp +++ b/include/wrapper/NonRealtime.hpp @@ -898,6 +898,13 @@ namespace impl { RegisterUnitIf()(ft); Client::getMessageDescriptors().template iterate(); + + + static std::string flushCmd = std::string(Wrapper::getName()) + "/flush"; + + ft->fDefinePlugInCmd(flushCmd.c_str(),[](World*, void*, struct sc_msg_iter*, void* ){ + mCache.clear(); + },nullptr); } diff --git a/release-packaging/Classes/FluidServerObject.sc b/release-packaging/Classes/FluidServerObject.sc index bbb342e..f2b7e0b 100644 --- a/release-packaging/Classes/FluidServerObject.sc +++ b/release-packaging/Classes/FluidServerObject.sc @@ -15,6 +15,7 @@ FluidServerObject serverCaches[this] ?? {serverCaches[this] = FluidServerCache.new}; serverCaches[this].initCache(server); NotificationCenter.register(server,\newAllocators,this,{ count = 0; }); + ServerBoot.add({this.flush(Server.internal)},Server.internal); } *newMsg{|id, params| @@ -81,6 +82,9 @@ FluidServerObject *objectClassName { ^this.name.asSymbol } + *flushMsg { ^['/cmd',this.objectClassName ++ '/flush'] } + + *flush {|server| server.listSendMsg(this.flushMsg)} } FluidBufProcessor : FluidServerObject