protected function post_process($filename) { echo "post processing {$filename}...\n"; // Use the caching version via Dependency Injection. This means that all // new SSLTracks created using a SSLTrackFactory will get a RuntimeCachingSSLTrack // that knows how to ask the cache about expensive lookups (such as getID3 stuff). Inject::map('SSLTrackFactory', new SSLTrackCache()); $ts = new InstantTickSource(); $hfm = new SSLHistoryFileReplayer($filename); $ism = new ImmediateScrobbleModel(); // deal with PLAYED tracks one by one $ts->addTickObserver($hfm); $hfm->addExitObserver($ts); $hfm->addDiffObserver($ism); // get the PluginWrapper that wraps all other plugins. $pw = $this->plugin_manager->getObservers(); // add all of the PluginWrappers to the various places. $ts->addTickObserver($pw[0]); $hfm->addDiffObserver($pw[0]); $ism->addScrobbleObserver($pw[0]); $this->plugin_manager->onStart(); // Tick tick tick. This only returns if a signal is caught $ts->startClock($this->sleep); $this->plugin_manager->onStop(); }