public void ExecuteCacheBuild(XmlDocument doc, Logger serverLogger) { cacheLock.EnterWriteLock(); try { DateTime now = DateTime.Now; XmlNode lastCacheTimeNode = doc.DocumentElement.SelectSingleNode("lastCacheTime"); if (lastCacheTimeNode != null) { lastCacheTimeNode.InnerText = Convert.ToString(now); //Save settings doc.PreserveWhitespace = true; doc.Save(AddInModule.DATA_DIR + "\\settings.xml"); } serverLogger.Write("Updating cache now in progress"); MusicCmd.clear_cache(); Logger musicLogger = new Logger("MusicCmd", true); //Build caches for full library creation in Emote MusicCmd music = new MusicCmd(MusicCmd.LIST_DETAILS); music.ExecuteCacheBuild(musicLogger); music = new MusicCmd(MusicCmd.LIST_ARTISTS); music.ExecuteCacheBuild(musicLogger); music = new MusicCmd(MusicCmd.LIST_GENRES); music.ExecuteCacheBuild(musicLogger); musicLogger.Close(); serverLogger.Write("Cache update finished"); } finally { cacheLock.ExitWriteLock(); } }
private OpResult getSettings(ServerSettings settings, bool isBuilding) { settings.is_building = isBuilding; WindowsMediaPlayer Player = new WindowsMediaPlayer(); settings.is_cache_outdated = MusicCmd.get_is_cache_outdated(MusicCmd.get_audio_item_count((IWMPMediaCollection2)Player.mediaCollection)); ((ServerSettingsCmd)m_commands["server-settings"]).set(settings); return(((ICommand)m_commands["server-settings"]).Execute("")); }
public OpResult ExecuteLibraryStats(ServerSettings settings) { if (cacheLock.TryEnterReadLock(0)) { OpResult opResult = new OpResult(); opResult.StatusCode = OpStatusCode.Success; LibraryStats library_stats = new LibraryStats(); try { int[] list_codes = new int[] { MusicCmd.LIST_ALBUMS, MusicCmd.LIST_ALBUM_ARTISTS, MusicCmd.LIST_ARTISTS, MusicCmd.LIST_GENRES, MusicCmd.LIST_DETAILS, MusicCmd.LIST_PLAYLISTS }; foreach (int i in list_codes) { MusicCmd cmd = new MusicCmd(i); switch (i) { case MusicCmd.LIST_ALBUMS: library_stats.albums = cmd.ExecuteStats().ResultCount; break; case MusicCmd.LIST_ALBUM_ARTISTS: library_stats.album_artists = cmd.ExecuteStats().ResultCount; break; case MusicCmd.LIST_ARTISTS: library_stats.artists = cmd.ExecuteStats().ResultCount; break; case MusicCmd.LIST_GENRES: library_stats.genres = cmd.ExecuteStats().ResultCount; break; case MusicCmd.LIST_DETAILS: library_stats.songs = cmd.ExecuteStats().ResultCount; break; case MusicCmd.LIST_PLAYLISTS: library_stats.playlists = cmd.ExecuteStats().ResultCount; break; } } } finally { cacheLock.ExitReadLock(); } opResult.ContentObject = library_stats; return(opResult); } else { return(getSettings(settings, true)); } }
public bool ExecuteCacheCheck() { bool isCacheVerified = false; cacheLock.EnterReadLock(); try { WindowsMediaPlayer Player = new WindowsMediaPlayer(); if (!MusicCmd.delete_old_cache(MusicCmd.get_audio_item_count((IWMPMediaCollection2)Player.mediaCollection))) { //Only verify if cache wasn't deleted by check above try { FileInfo fi = new FileInfo(MusicCmd.get_cache_filepath(MusicCmd.LIST_DETAILS, "")); if (fi.Exists) { fi = new FileInfo(MusicCmd.get_cache_filepath(MusicCmd.LIST_ARTISTS, "")); if (fi.Exists) { fi = new FileInfo(MusicCmd.get_cache_filepath(MusicCmd.LIST_GENRES, "")); if (fi.Exists) { isCacheVerified = true; } } } } catch (Exception) { } } } finally { cacheLock.ExitReadLock(); } return(isCacheVerified); }
/// <summary> /// Checks to see if there is a settings parameter and /// returns -1 if none /// </summary> public int GetServerSetting(string param) { if (param != null) { string setter = null; if (param.Contains("set-build-hour:")) { setter = "set-build-hour:"; } else if (param.Contains("set-send-buffer:")) { setter = "set-send-buffer:"; } if (setter != null) { string preString = param.Substring(param.IndexOf(setter) + setter.Length); string rawString = MusicCmd.trim_parameter(preString); int setting = Convert.ToInt32(rawString); if (param.Contains("set-build-hour:") && setting >= 0 && setting < 24) { return(setting); } else if (param.Contains("set-send-buffer:") && setting > HttpSocketServer.MIN_SEND_BUFFER_SIZE) { return(setting); } else { throw new Exception(); } } return(-1); } return(-1); }