/// <summary> /// Opens all of the database groups. /// </summary> /// <param name="sender"></param> /// <param name="pushEventsGroupNames"></param> public void GroupedVariableListenerOnVariablesModified(GroupedVariableListener sender, List<String> pushEventsGroupNames) { foreach (String pushEventsGroupName in pushEventsGroupNames) { String pushUri = this.Shared.Variables.Get(VariableModel.NamespaceVariableName(pushEventsGroupName, CommonVariableNames.EventsPushUri), String.Empty); // Make sure we have the available data to setup this end point. if (String.IsNullOrEmpty(pushUri) == false) { if (this.EndPoints.ContainsKey(pushEventsGroupName) == false) { IPushEventsEndPoint endPoint = new PushEventsEndPoint() { // Deliberately done this way so two end points can't share identical credentials // but share identical Uri's. Who knows what people might be doing? Id = pushEventsGroupName, // The password used to push data. Optional. Can be blank, null or garbage. It's just passed on to the server. StreamKey = this.Shared.Variables.Get(VariableModel.NamespaceVariableName(pushEventsGroupName, CommonVariableNames.EventPushStreamKey), String.Empty), Uri = new Uri(this.Shared.Variables.Get(VariableModel.NamespaceVariableName(pushEventsGroupName, CommonVariableNames.EventsPushUri), String.Empty)), // Defaults to a 1 second interval Interval = this.Shared.Variables.Get(VariableModel.NamespaceVariableName(pushEventsGroupName, CommonVariableNames.EventPushIntervalSeconds), 1), // Defaults to Xml serialization ContentType = Mime.ToMimeType(this.Shared.Variables.Get(VariableModel.NamespaceVariableName(pushEventsGroupName, CommonVariableNames.EventPushContentType), Mime.ApplicationJson), Mime.ApplicationJson), // Defaults to empty list. InclusiveNames = this.Shared.Variables.Variable(VariableModel.NamespaceVariableName(pushEventsGroupName, CommonVariableNames.EventPushInclusiveNames)).ToList<String>() }; // Now make sure we don't already push to this Uri with the same interval. if (this.EndPoints.ContainsValue(endPoint) == false) { this.EndPoints.Add(pushEventsGroupName, endPoint); } } // Else, modify the existing end point. else { this.EndPoints[pushEventsGroupName].StreamKey = this.Shared.Variables.Get(VariableModel.NamespaceVariableName(pushEventsGroupName, CommonVariableNames.EventPushStreamKey), String.Empty); this.EndPoints[pushEventsGroupName].Uri = new Uri(this.Shared.Variables.Get(VariableModel.NamespaceVariableName(pushEventsGroupName, CommonVariableNames.EventsPushUri), String.Empty)); this.EndPoints[pushEventsGroupName].Interval = this.Shared.Variables.Get(VariableModel.NamespaceVariableName(pushEventsGroupName, CommonVariableNames.EventPushIntervalSeconds), 1); this.EndPoints[pushEventsGroupName].ContentType = Mime.ToMimeType(this.Shared.Variables.Get(VariableModel.NamespaceVariableName(pushEventsGroupName, CommonVariableNames.EventPushContentType), Mime.ApplicationJson), Mime.ApplicationJson); this.EndPoints[pushEventsGroupName].InclusiveNames = this.Shared.Variables.Variable(VariableModel.NamespaceVariableName(pushEventsGroupName, CommonVariableNames.EventPushInclusiveNames)).ToList<String>(); } } } // Clear all tasks. We'll reestablish them again. Just easier than juggling what // has been added or not. this.Tasks.ForEach(task => task.Dispose()); this.Tasks.Clear(); foreach (var endPoint in this.EndPoints) { this.Tasks.Add( new Timer(OnTick, endPoint.Value, TimeSpan.FromMilliseconds(0), TimeSpan.FromSeconds(endPoint.Value.Interval)) ); } }
/// <summary> /// Opens all of the database groups. /// </summary> /// <param name="sender"></param> /// <param name="databaseGroupNames"></param> private void GroupedVariableListenerOnVariablesModified(GroupedVariableListener sender, List<String> databaseGroupNames) { foreach (String databaseGroupName in databaseGroupNames) { IDriver driver = this.AvailableDrivers.FirstOrDefault(pool => String.Compare(pool.Name, this.Shared.Variables.Get<String>(VariableModel.NamespaceVariableName(databaseGroupName, CommonVariableNames.DatabaseDriverName)), StringComparison.InvariantCultureIgnoreCase) == 0); if (driver != null) { if (this.OpenDrivers.ContainsKey(databaseGroupName) == false) { driver = (IDriver)driver.Clone(); driver.Settings = new DriverSettings() { Hostname = this.Shared.Variables.Get(VariableModel.NamespaceVariableName(databaseGroupName, CommonVariableNames.DatabaseHostname), String.Empty), Port = this.Shared.Variables.Get<ushort>(VariableModel.NamespaceVariableName(databaseGroupName, CommonVariableNames.DatabasePort)), Username = this.Shared.Variables.Get(VariableModel.NamespaceVariableName(databaseGroupName, CommonVariableNames.DatabaseUid), String.Empty), Password = this.Shared.Variables.Get(VariableModel.NamespaceVariableName(databaseGroupName, CommonVariableNames.DatabasePassword), String.Empty), Database = this.Shared.Variables.Get(VariableModel.NamespaceVariableName(databaseGroupName, CommonVariableNames.DatabaseName), String.Empty), Memory = this.Shared.Variables.Get(VariableModel.NamespaceVariableName(databaseGroupName, CommonVariableNames.DatabaseMemory), false) }; this.OpenDrivers.Add(databaseGroupName, driver); } else { // Close it if it's already open. this.OpenDrivers[databaseGroupName].Close(); this.OpenDrivers[databaseGroupName].Settings = new DriverSettings() { Hostname = this.Shared.Variables.Get(VariableModel.NamespaceVariableName(databaseGroupName, CommonVariableNames.DatabaseHostname), String.Empty), Port = this.Shared.Variables.Get<ushort>(VariableModel.NamespaceVariableName(databaseGroupName, CommonVariableNames.DatabasePort)), Username = this.Shared.Variables.Get(VariableModel.NamespaceVariableName(databaseGroupName, CommonVariableNames.DatabaseUid), String.Empty), Password = this.Shared.Variables.Get(VariableModel.NamespaceVariableName(databaseGroupName, CommonVariableNames.DatabasePassword), String.Empty), Database = this.Shared.Variables.Get(VariableModel.NamespaceVariableName(databaseGroupName, CommonVariableNames.DatabaseName), String.Empty), Memory = this.Shared.Variables.Get(VariableModel.NamespaceVariableName(databaseGroupName, CommonVariableNames.DatabaseMemory), false) }; } } } }
/// <summary> /// Opens all of the repository groups /// </summary> /// <param name="sender"></param> /// <param name="repositoryGroupNames"></param> private void GroupedVariableListenerOnVariablesModified(GroupedVariableListener sender, List<String> repositoryGroupNames) { this.Cache.Clear(); foreach (String repositoryGroupName in repositoryGroupNames) { String uri = this.Shared.Variables.Get(VariableModel.NamespaceVariableName(repositoryGroupName, CommonVariableNames.PackagesRepositoryUri), String.Empty); if (String.IsNullOrEmpty(uri) == false) { this.Cache.Add(uri); } } this.AssignEvents(); }