Exemple #1
0
        public static SearchModel ApplyFilters(SearchQuery query, TagMessagesCollection messages)
        {
            SearchModel searchModel = new SearchModel();

            //init messages
            searchModel.MessagesCollection = new TagMessagesCollection(messages.Host, messages.Tag);
            //init filters
            searchModel.FilterModel = new FilterModel()
            {
                Severity    = !String.IsNullOrEmpty(query.Severity) ? query.Severity : String.Empty,
                Text        = !String.IsNullOrEmpty(query.Text) ? query.Text : String.Empty,
                StartTime   = query.StartTime,
                EndTime     = query.EndTime,
                MinSeverity = !String.IsNullOrEmpty(query.MinSeverity) ? query.MinSeverity : String.Empty
            };
            FilterUtility.ApplyQueryFilters(searchModel, messages.Messages);
            //calculate page options
            searchModel.PageOptions = new PageOptions();
            //TODO: Hard-coded page size
            searchModel.PageOptions.PageCount = (searchModel.MessagesCollection.Messages.Count / 50) + 1;
            if (query.Page <= 0 || query.Page > searchModel.PageOptions.PageCount)
            {
                searchModel.PageOptions.Page = 1;
            }
            else
            {
                searchModel.PageOptions.Page = query.Page;
            }
            //filter by page
            searchModel.MessagesCollection.Messages = searchModel.MessagesCollection.Messages.Skip((searchModel.PageOptions.Page - 1) * 50).Take(50).ToList();
            return(searchModel);
        }
        public HtmlActionResult <TagMessagesCollection> MessageView(string host, string tag)
        {
            IStateQuery           syslogState   = base.GetSyslogState();
            TagMessagesCollection msgCollection = syslogState.GetTagMessages(host, tag);

            msgCollection.Messages.Sort((x, y) => y.Timestamp.CompareTo(x.Timestamp));
            return(new HtmlActionResult <TagMessagesCollection>(Path.Combine(base.GetViewDirectory(), "Messages.cshtml"), msgCollection));
        }
        public HtmlActionResult <SearchModel> Search([FromUri] SearchQuery search)
        {
            IStateQuery           syslogState   = base.GetSyslogState();
            TagMessagesCollection msgCollection = syslogState.GetTagMessages(search.Host, search.Tag);

            //msgCollection.Messages.Sort((x, y) => y.Timestamp.CompareTo(x.Timestamp));
            //TODO: This is stable sort but not in-place => possible memory pressure
            msgCollection.Messages = msgCollection.Messages.OrderByDescending(x => x.Timestamp).ToList();
            SearchModel searchModel = FilterUtility.ApplyFilters(search, msgCollection);

            return(new HtmlActionResult <SearchModel>(Path.Combine(base.GetViewDirectory(), "Search.cshtml"), searchModel));
        }
 public TagMessagesCollection GetTagMessages(string host, string tag)
 {
     this.rwLock.EnterReadLock();
     try
     {
         TagMessagesCollection tagMessages = new TagMessagesCollection(host, tag);
         foreach (var msg in this.messageQueue)
         {
             if (msg.Hostname.Equals(host, StringComparison.CurrentCultureIgnoreCase) &&
                 msg.Tag.Equals(tag, StringComparison.CurrentCultureIgnoreCase))
             {
                 tagMessages.Messages.Add(msg);
             }
         }
         return(tagMessages);
     }
     finally
     {
         this.rwLock.ExitReadLock();
     }
 }