public TeamCityAggregator(IRobot robot) : base("TeamCity Aggregator", robot) { _settings = new List<IPluginSetting> { new PluginSetting(Robot, this, "TeamCityNotifyRoomName"), new PluginSetting(Robot, this, "TeamCityHipchatAuthToken"), new PluginSetting(Robot, this, "TeamCityBuildsMaxDuration") }; _subject = new Subject<TeamCityModel>(); var maxWaitDuration = TimeSpan.FromMinutes(double.Parse(Robot.Settings.Get("TeamCityBuildsMaxDuration"))); _subject .GroupBy(model => model.build.buildNumber) .Subscribe(grp => grp.Buffer(maxWaitDuration, ExpectedBuildCount, Scheduler).Take(1).Subscribe(SendNotification)); Robot.EventEmitter.On<TeamCityModel>("TeamCityBuild", OnTeamCityBuild); }