New free message; no dice if server not running; working freeAll

nix
Owen Green 6 years ago
parent 3777057995
commit d6905db3a3

@ -18,8 +18,9 @@ FluidDataSet : FluidManipulationClient {
*new { |server,name|
if(this.at(server,name).notNil){
FluidDataSetExistsError("A FluidDataset called % already exists.".format(name)).throw;
^nil
}
{^super.new(server,*FluidManipulationClient.prServerString(name)).init(name)}
^super.new(server,*FluidManipulationClient.prServerString(name))!?{|inst|inst.init(name);inst}
}
init {|name|
@ -76,16 +77,12 @@ FluidDataSet : FluidManipulationClient {
this.prSendMsg(\clear,[],action);
}
free { |action|
free {
serverCaches.remove(server,id);
fork{
if(server.serverRunning){this.prSendMsg(\free,[],action)};
server.sync;
super.free;
}
}
*freeAll { |server|
serverCaches.tryPerform(\clearCache,server);
serverCaches.do(server,{|x|x.free;});
}
}

@ -4,7 +4,7 @@ FluidKDTree : FluidManipulationClient {
*new {|server|
var uid = UniqueID.next;
^super.new(server,uid).init(uid);
^super.new(server,uid)!?{|inst|inst.init(uid);inst}
}
init {|uid|
@ -34,9 +34,4 @@ FluidKDTree : FluidManipulationClient {
write{ |filename,action|
this.prSendMsg(\write,[filename.asString],action);
}
free { |action|
if(server.serverRunning){this.prSendMsg(\free,[],action)};
super.free;
}
}

@ -4,7 +4,7 @@ FluidKMeans : FluidManipulationClient {
*new {|server|
var uid = UniqueID.next;
^super.new(server,uid).init(uid);
^super.new(server,uid)!?{|inst|inst.init(uid);inst}
}
init {|uid|

@ -2,7 +2,7 @@ FluidKNN : FluidManipulationClient {
*new {|server|
var uid = UniqueID.next;
^super.new(server,uid).init(uid);
^super.new(server,uid)!?{|inst|inst.init(uid);inst}
}
init {|uid|

@ -18,7 +18,7 @@ FluidLabelSet : FluidManipulationClient {
serverCaches.at(server,name) !? {
FluidLabelSetExistsError("A FluidLabelSet called % already exists.".format(name)).throw;
};
^super.new(server,*FluidManipulationClient.prServerString(name)).init(name)
^super.new(server,*FluidManipulationClient.prServerString(name))!?{|inst|inst.init(name);inst}
}
init { |name|
@ -73,11 +73,10 @@ FluidLabelSet : FluidManipulationClient {
free { |action|
serverCaches.remove(server,id);
if(server.serverRunning){this.prSendMsg(\free,[],action)};
super.free;
}
*freeAll { |server|
serverCaches.tryPerform(\clearCache,server);
serverCaches.do(server,{|x|x.free;});
}
}

@ -37,7 +37,7 @@ FluidManipulationClient {
*new{ |server...args|
server = server ? Server.default;
if(server.serverRunning.not,{
(this.asString + " server not running").warn;
(this.asString + " server not running").error; ^nil
});
^super.newCopyArgs(server ?? {Server.default}).baseinit(*args)
}
@ -72,6 +72,7 @@ FluidManipulationClient {
free{
persist = false;
if(server.serverRunning){server.sendMsg("/cmd","free"++this.class.name,id)};
synth.tryPerform(\free);
^nil
}
@ -102,6 +103,10 @@ FluidServerCache {
cache = IdentityDictionary.new;
}
do { |server, func|
cache[server]!?{cache[server].do{|x|func.value(x)}}
}
at { |server,id|
^cache[server].tryPerform(\at,id)
}
@ -121,15 +126,16 @@ FluidServerCache {
initCache {|server|
cache[server] ?? {
cache[server] = IdentityDictionary.new;
ServerQuit.add({this.clearCache(server)},server);
NotificationCenter.register(server,\newAllocators,this, {
NotificationCenter.register(server,\newAllocators,this,
{
this.clearCache(server);
});
}
}
clearCache { |server|
cache[server] !? { cache.removeAt(server) !? {|x| x.tryPerform(\free) } };
cache.postln;
cache[server] !? { cache.removeAt(server) };
}
}

@ -2,7 +2,7 @@ FluidNormalize : FluidManipulationClient {
*new {|server|
var uid = UniqueID.next;
^super.new(server,uid).init(uid);
^super.new(server,uid)!?{|inst|inst.init(uid);inst}
}
init {|uid|

@ -3,7 +3,7 @@ FluidPCA : FluidManipulationClient {
*new {|server|
var uid = UniqueID.next;
^super.new(server,uid).init(uid);
^super.new(server,uid)!?{|inst|inst.init(uid);inst}
}
init {|uid|

@ -2,7 +2,7 @@ FluidStandardize : FluidManipulationClient {
*new {|server|
var uid = UniqueID.next;
^super.new(server,uid).init(uid);
^super.new(server,uid)!?{|inst|inst.init(uid);inst}
}
init {|uid|

@ -21,26 +21,23 @@ TestFluidCorpusManipulationServer : UnitTest
test_DataSetPersistence{
var foo, bar, tree, testPoint;
foo = FluidDataSet(Server.default,\foo);
//No server on? You get nothing
this.assertEquals(nil,FluidDataSet(Server.default,\foo));
this.bootServer(Server.default);
while {Server.default.serverRunning.not}{0.2.wait};
// while {Server.default.serverRunning.not}{0.2.wait};
waitForCounts.test = false;
Server.default.doWhenBooted{foo=FluidDataSet(Server.default,\foo)};
waitForCounts.wait;
this.assertEquals(Server.default.numSynths,1,"Dataset: One Synth present after deferred boot");
waitForCounts.test = false;
foo.free;
Server.default.freeAll;
waitForCounts.wait;
this.assertEquals(Server.default.numSynths,0,"Dataset: One Synth present via cretation after boot");
this.assertEquals(Server.default.numSynths,0,"Dataset: No synth present via cretation after free");
foo=FluidDataSet(Server.default,\foo);
//Uniqueness test (difficult to run with previous instance of foo, because
//UnitTest.bootServer messes with Server alloctors and screws up the ID cache
foo = FluidDataSet(Server.default,\foo);
this.assertException({
bar = FluidDataSet(Server.default,\foo);
},FluidDataSetExistsError,"DataSetDuplicateError on reused name", onFailure:{
@ -50,8 +47,7 @@ TestFluidCorpusManipulationServer : UnitTest
waitForCounts.test = false;
bar = FluidDataSet(Server.default,\bar);
waitForCounts.wait;
this.assertEquals(Server.default.numSynths,2,"Dataset: Two Synths present after new Dataset added");
this.assertEquals(Server.default.numSynths,2,"Dataset: Two Synths present after new valid Dataset added");
testPoint = Buffer.alloc(Server.default,8);
Server.default.sync;

Loading…
Cancel
Save