void ITimeTask.Run( ) { while (!Disposed) { if (IsRunning) { lock ( ExpireUsers ) { for (int i = 0; i < ExpireUsers.Count; i++) { var keys = new List <long>(ExpireUsers.Keys); var key = keys[i]; var item = ExpireUsers[key]; if (TimeSet.Verification(new TimeSet(DateTime.Now), item, new TimeSet(item.Hour, item.Minute + ExpireTime))) { continue; } else { ExpireUsers.Remove(key); } } } } Thread.Sleep(ExpireDelay * 60); } }
public bool Verification( ) { if (Debug_TimeSkipFlag) { return(true); } if (moduleWakeup == null && moduleSleep == null) { return(true); } if (moduleWakeup.Hour == int.MaxValue && moduleSleep.Hour == int.MaxValue) { return(true); } return(TimeSet.Verification(new TimeSet(DateTime.Now), this.moduleWakeup, this.moduleSleep)); }
private TweetMatchResult IsMatch(string category, string input, ITweet status) { TweetMatchResult state = TweetMatchResult.NotMatch; var originText = status.Text.Replace(" ", "").Replace("\n", ""); var compareText = input.Replace(" ", "").Replace("\n", ""); // TODO: Use IsCategoryMatch() if (ParseEscapeInput(originText, compareText)) { switch (category) { case "All": if ((status.InReplyToStatusId == null && status.InReplyToScreenName == null && !new Regex("^\\s@\\s").IsMatch(status.Text)) || status.InReplyToUserId == Globals.Instance.User.Id) { Log.Print(this.Name, "catch tweet (all) [{0}({1}) : {2}]", status.CreatedBy.Name, status.CreatedBy.ScreenName, status.Text); state = TweetMatchResult.Match; } break; case "Mention": if (status.InReplyToUserId == Globals.Instance.User.Id) { Log.Print(this.Name, "catch tweet (Mention) [{0}({1}) : {2}]", status.CreatedBy.Name, status.CreatedBy.ScreenName, status.Text); state = TweetMatchResult.Match; } break; case "Public": if (status.InReplyToStatusId == null && status.InReplyToScreenName == null && !new Regex("^\\s@\\s").IsMatch(status.Text)) { Log.Print(this.Name, "catch tweet (Public) [{0}({1}) : {2}]", status.CreatedBy.Name, status.CreatedBy.ScreenName, status.Text); state = TweetMatchResult.Match; } break; default: break; } if (ExpireTime != 0 && !Debug_ExpireSkipFlag) { lock ( ExpireUsers ) { if (ExpireUsers.ContainsKey(status.CreatedBy.Id)) { var ExpireTimeset = ExpireUsers[status.CreatedBy.Id]; if (TimeSet.Verification(new TimeSet(DateTime.Now), ExpireTimeset, new TimeSet(ExpireTimeset.Hour, ExpireTimeset.Minute + ExpireTime))) { Log.Print(this.Name, "User {0} rejected by expire : to {1}", status.CreatedBy.ScreenName, ExpireTimeset); state = TweetMatchResult.Expire; } else { ExpireUsers.Remove(status.CreatedBy.Id); } } } } } return(state); }