Dataest & Co: Clear server side caches on internal server reboot

resolves #77
nix
Owen Green 5 years ago
parent 85ec2e624f
commit db297c3845

@ -698,6 +698,7 @@ struct LifetimePolicy<Client, Wrapper,std::false_type, std::false_type>
} }
static void destroyClass(Unit* unit) { static_cast<Wrapper*>(unit)->~Wrapper(); } static void destroyClass(Unit* unit) { static_cast<Wrapper*>(unit)->~Wrapper(); }
static void setup(InterfaceTable*, const char*){} static void setup(InterfaceTable*, const char*){}
static void unload(){}
}; };
/// Model objects /// Model objects
@ -763,7 +764,18 @@ struct LifetimePolicy<Client, Wrapper,std::true_type, std::false_type>
auto pos = mRegistry.find(objectID); auto pos = mRegistry.find(objectID);
if(pos != mRegistry.end()) mRegistry.erase(objectID); if(pos != mRegistry.end()) mRegistry.erase(objectID);
}, &mRegistry); }, &mRegistry);
auto flushName = std::stringstream();
flushName << "flush" << name;
ft->fDefinePlugInCmd(flushName.str().c_str(),
[](World*, void*, sc_msg_iter*,void*)
{
unload();
},nullptr);
} }
static void unload(){ mRegistry.clear(); }
private: private:
static std::unordered_map<index,CacheRecord> mRegistry; static std::unordered_map<index,CacheRecord> mRegistry;
@ -825,8 +837,24 @@ struct LifetimePolicy<Client, Wrapper,std::false_type, std::true_type>
mClientRegistry.erase(objectName); mClientRegistry.erase(objectName);
mParamsRegistry.erase(objectName); mParamsRegistry.erase(objectName);
}, &mClientRegistry); }, &mClientRegistry);
auto flushName = std::stringstream();
flushName << "flush" << name;
ft->fDefinePlugInCmd(flushName.str().c_str(),
[](World*, void*, sc_msg_iter*,void*)
{
unload();
},nullptr);
} }
static void unload()
{
mClientRegistry.clear();
mParamsRegistry.clear();
}
private: private:
static ClientPointer getClientPointer(Wrapper* wrapper) static ClientPointer getClientPointer(Wrapper* wrapper)
{ {

@ -53,9 +53,18 @@ FluidManipulationClient {
if(server.serverRunning.not,{ if(server.serverRunning.not,{
(this.asString + " server not running").error; ^nil (this.asString + " server not running").error; ^nil
}); });
NotificationCenter.register(server, \newAllocators, this, {
this.flush(server);
});
^super.newCopyArgs(server ?? {Server.default});//.baseinit(objectID,*args) ^super.newCopyArgs(server ?? {Server.default});//.baseinit(objectID,*args)
} }
*flush { |s|
s.sendMsg("/cmd","flush"++this.name);
}
makeDef { |defName,objectID,args| makeDef { |defName,objectID,args|
var initialVals = []; var initialVals = [];
args!? { if(args.size > 0) {initialVals = args.unlace(2)[1].flatten}}; args!? { if(args.size > 0) {initialVals = args.unlace(2)[1].flatten}};

Loading…
Cancel
Save