Ejemplo n.º 1
0
        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();
            }
        }
Ejemplo n.º 2
0
        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(""));
        }
Ejemplo n.º 3
0
        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));
            }
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        /// <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);
        }