static void Main(string[] args) { var options = new Options(); options.Parse(args); if (options.HasErrors) { options.PrintErrorsAndExit(Console.Out); } if (options.HelpRequested || options.GeneralArguments.Count > 0) { options.PrintOptions(""); Environment.Exit(0); } LeaderboardDataService.LeaderboardEntitySet leaderboardEntities = new LeaderboardDataService.LeaderboardEntitySet(new Uri("http://leaderboard/odata/LeaderboardDataService.svc")); leaderboardEntities.Credentials = CredentialCache.DefaultCredentials; var allUses = (from agg in leaderboardEntities.UserAggregations where agg.appid == 555555 select agg).ToList(); var failures = from fail in allUses where FeatureMatch(fail.featureid, options.feature) select fail; foreach (var failure in failures) { Console.WriteLine("User {0} used feature {3} {1} times (code {2})", failure.userid, failure.uses, failure.featureid, options.feature); if (failure.featureid < 0) { DecodeFailure(failure.featureid); } } }
private static bool FeatureMatch(int featureid, Options.Feature requested) { switch (requested) { case Options.Feature.fail: return (featureid < 0 || featureid > 40000000); case Options.Feature.ccrewrite: return (((featureid >> 12) & 7) == 1); case Options.Feature.ccdoc: return (((featureid >> 12) & 7) == 2); case Options.Feature.cccheck: return (((featureid >> 12) & 7) == 3); default: return false; } }