FluidServerObject { classvar serverCaches; classvar count; classvar persistent = true; var = 32) { commandName = commandName.select{|c|c.isVowel.not}}; ^['/cmd',commandName,id].addAll(args); } freeMsg { var msg; id ?? {" % already freed".format(this.class.name).warn; ^nil}; this.uncache; msg = this.prMakeMsg(\free,id); id = nil; ^msg; } free{ var msg = this.freeMsg; msg !? {server.listSendMsg(msg)} ?? {^nil}; } *freeAll{|server| serverCaches[this] !? {|cache| cache.clearCache(server ? Server.default); }; count = 0; } asUGenInput{ ^id } asString { ^"%(%)".format(this.class.name,id).asString; } asSymbol { ^id.asSymbol } *objectClassName { ^this.name.asSymbol } *flushMsg { ^['/cmd',this.objectClassName ++ '/flush'] } *flush {|server| server.listSendMsg(this.flushMsg)} } FluidBufProcessor : FluidServerObject { var