//allows adding or modifying a destination for a specific application server public void AddOrEditDestination(ConnectionInformations ci) { //in productive code the given parameters should be checked for validity, e.g. that name is not null //as this is not relevant for the example, we omit it here RfcConfigParameters par = new RfcConfigParameters(); par.Add(RfcConfigParameters.Name, ci.Name); par.Add(RfcConfigParameters.AppServerHost, ci.AppServerHost); par.Add(RfcConfigParameters.SystemNumber, ci.SystemNumber); par.Add(RfcConfigParameters.SystemID, ci.SystemID); par.Add(RfcConfigParameters.User, ci.User); par.Add(RfcConfigParameters.Password, ci.Password); par.Add(RfcConfigParameters.Client, ci.Client); par.Add(RfcConfigParameters.Language, ci.Language); par.Add(RfcConfigParameters.PoolSize, ci.PoolSize); par.Add(RfcConfigParameters.MaxPoolSize, ci.MaxPoolSize); par.Add(RfcConfigParameters.IdleTimeout, ci.IdleTimeout); par.Add(RfcConfigParameters.SAPRouter, ci.SAPRouter); RfcConfigParameters existingConfiguration; //if a destination of that name existed before, we need to fire a change event if (availableDestinations.TryGetValue(ci.Name, out existingConfiguration)) { availableDestinations[ci.Name] = par; RfcConfigurationEventArgs eventArgs = new RfcConfigurationEventArgs(RfcConfigParameters.EventType.CHANGED, par); if (changeHandler != null) { changeHandler(ci.Name, eventArgs); } } else { availableDestinations[ci.Name] = par; } }
//allows adding or modifying a destination for a specific application server public void AddOrEditDestination(string name, int poolSize, string user, string password, string language, string client, string applicationServer, string systemNumber) { //in productive code the given parameters should be checked for validity, e.g. that name is not null //as this is not relevant for the example, we omit it here RfcConfigParameters parameters = new RfcConfigParameters(); parameters[RfcConfigParameters.Name] = name; parameters[RfcConfigParameters.MaxPoolSize] = Convert.ToString(poolSize); parameters[RfcConfigParameters.IdleTimeout] = Convert.ToString(6); // we keep connections for 10 minutes parameters[RfcConfigParameters.User] = user; parameters[RfcConfigParameters.Password] = password; parameters[RfcConfigParameters.Client] = client; parameters[RfcConfigParameters.Language] = language; parameters[RfcConfigParameters.AppServerHost] = applicationServer; parameters[RfcConfigParameters.SystemNumber] = systemNumber; RfcConfigParameters existingConfiguration; //if a destination of that name existed before, we need to fire a change event if (availableDestinations.TryGetValue(name, out existingConfiguration)) { availableDestinations[name] = parameters; RfcConfigurationEventArgs eventArgs = new RfcConfigurationEventArgs(RfcConfigParameters.EventType.CHANGED, parameters); MessageBox.Show("Fire change event " + eventArgs.ToString() + " for destination " + name); changeHandler(name, eventArgs); } else { availableDestinations[name] = parameters; } //MessageBox.Show("Added application server destination " + name); }
public void AddOrEditDestination(RfcConfigParameters parameters) { string name = parameters[RfcConfigParameters.Name]; if (availableDestinations.ContainsKey(name)) { // Fire a change event if (ConfigurationChanged != null) /* Always check for null on event handlers... If AddOrEditDestination() gets called before this * instance of InMemoryDestinationConfiguration is registered with the RfcDestinationManager, we * would get a NullReferenceException when trying to raise the event... Stupid concept. * Why doesn't the .NET framework do this for me? */ { RfcConfigurationEventArgs eventArgs = new RfcConfigurationEventArgs(RfcConfigParameters.EventType.CHANGED, parameters); Console.WriteLine("Firing change event {0} for destination {1}", eventArgs.ToString(), name); ConfigurationChanged(name, eventArgs); } } // Replace the current parameters of an existing destination or add a new one availableDestinations[name] = parameters; string tmp; Console.WriteLine("{1} destination {0} added/changed", name, parameters.TryGetValue(RfcConfigParameters.LogonGroup, out tmp) ? "Load balancing" : "Application server"); }
public Boolean AddOrEditDestination(RfcConfigParameters rfcConfigParameters) { Boolean isRegistered = false; try { String name = rfcConfigParameters[RfcConfigParameters.Name]; if (_configurationList.ContainsKey(name)) { if (ConfigurationChanged != null) { RfcConfigurationEventArgs eventArgs = new RfcConfigurationEventArgs(RfcConfigParameters.EventType.CHANGED, rfcConfigParameters); ConfigurationChanged(name, eventArgs); } } _configurationList[name] = rfcConfigParameters; isRegistered = true; } catch (Exception e) { throw e; } return(isRegistered); }
public void RemoveDestination(string name) { if (!string.IsNullOrEmpty(name) && availableDestinations.Remove(name)) { RfcConfigurationEventArgs eventArgs = new RfcConfigurationEventArgs(RfcConfigParameters.EventType.DELETED); changeHandler(name, eventArgs); } }
public event RfcDestinationManager.ConfigurationChangeHandler ConfigurationChanged; // muss vorhanden sein public void AddDestination(RfcConfigParameters parameters) { // name aus der Config holen string name = parameters[RfcConfigParameters.Name]; if (availableDestinations.ContainsKey(name)) { //checked for null on event handler, um NullReferenceException zu vermeiden (Aufruf bevor eine destination registriert) if (ConfigurationChanged != null) { RfcConfigurationEventArgs eventArgs = new RfcConfigurationEventArgs(RfcConfigParameters.EventType.CHANGED, parameters); Console.WriteLine("Firing change event {0} for destination {1}", eventArgs.ToString(), name); ConfigurationChanged(name, eventArgs); } } // erstelle eine destination availableDestinations[name] = parameters; }
/// <summary> /// Called by constructor, adds Rfc params contained in /// Xml document. /// </summary> /// <param name="destinationName">The destination name used in repositiry</param> /// <returns>The collection of RFC parameters</returns> public void UpdateParameters(XmlDocument configDOM) { RfcConfigParameters parameters = new RfcConfigParameters(); parameters.Add(RfcConfigParameters.AppServerHost, SAPIDocUtils.Extract(configDOM, "/Config/appServerHost").ToString()); parameters.Add(RfcConfigParameters.Client, SAPIDocUtils.Extract(configDOM, "/Config/client").ToString()); parameters.Add(RfcConfigParameters.Language, SAPIDocUtils.Extract(configDOM, "/Config/language").ToString()); parameters.Add(RfcConfigParameters.MaxPoolSize, SAPIDocUtils.Extract(configDOM, "/Config/maxPoolSize").ToString()); parameters.Add(RfcConfigParameters.MaxPoolWaitTime, SAPIDocUtils.Extract(configDOM, "/Config/maxPoolSizeWaitTime").ToString()); parameters.Add(RfcConfigParameters.MessageServerHost, SAPIDocUtils.Extract(configDOM, "/Config/messageServerHost").ToString()); //parameters.Add(RfcConfigParameters.PoolSize, SAPIDocUtils.Extract(configDOM, "/Config/poolSize")); parameters.Add(RfcConfigParameters.SystemID, SAPIDocUtils.Extract(configDOM, "/Config/systemID").ToString()); parameters.Add(RfcConfigParameters.SystemNumber, SAPIDocUtils.Extract(configDOM, "/Config/systemNumber").ToString()); parameters.Add(RfcConfigParameters.User, SAPIDocUtils.Extract(configDOM, "/Config/username")); parameters.Add(RfcConfigParameters.Password, SAPIDocUtils.Extract(configDOM, "/Config/password")); parameters.Add(RfcConfigParameters.RepositoryDestination, _destinationName); RfcConfigParameters existingConfiguration; //if a destination of that name existed before, we need to fire a change event if (availableDestinations.TryGetValue(_destinationName, out existingConfiguration)) { availableDestinations[_destinationName] = parameters; RfcConfigurationEventArgs eventArgs = new RfcConfigurationEventArgs(RfcConfigParameters.EventType.CHANGED, parameters); System.Diagnostics.Trace.WriteLine("Fire change event " + eventArgs.ToString() + " for destination " + _destinationName); // fire changed event if (ConfigurationChanged != null) { ConfigurationChanged(_destinationName, eventArgs); } } else { availableDestinations[_destinationName] = parameters; } }
public void AddOrEditDestination(RfcConfigParameters parameters) { string name = parameters[RfcConfigParameters.Name]; if (_availableDestinations.ContainsKey(name)) { RfcConfigurationEventArgs eventArgs = new RfcConfigurationEventArgs(RfcConfigParameters.EventType.CHANGED, parameters); if (ConfigurationChanged != null) { ConfigurationChanged(name, eventArgs); } } _availableDestinations[name] = parameters; string tmp = "Application server"; bool isLoadValancing = parameters.TryGetValue(RfcConfigParameters.LogonGroup, out tmp); if (isLoadValancing) { tmp = "Load balancing"; } }
/// <summary> /// Overloaded method called by constructor to add /// hard0-coded values to RfcConfigparams /// </summary> /// <param name="destinationName">The destination name used in repositiry</param> /// <returns>The collection of RFC parameters</returns> private void AddParameters(String destinationName) { if ("SAP_IDOC_DESTINATION_CONFIG".Equals(destinationName)) { RfcConfigParameters parameters = new RfcConfigParameters(); parameters.Add(RfcConfigParameters.AppServerHost, "10.2.17.78"); parameters.Add(RfcConfigParameters.Client, "120"); parameters.Add(RfcConfigParameters.Language, "EN"); parameters.Add(RfcConfigParameters.MaxPoolSize, "10"); parameters.Add(RfcConfigParameters.MaxPoolWaitTime, "300"); parameters.Add(RfcConfigParameters.MessageServerHost, "10.2.17.78"); parameters.Add(RfcConfigParameters.SystemID, "DR3"); parameters.Add(RfcConfigParameters.SystemNumber, "00"); parameters.Add(RfcConfigParameters.User, "biztalk"); parameters.Add(RfcConfigParameters.Password, "klatzib1"); RfcConfigParameters existingConfiguration; //if a destination of that name existed before, we need to fire a change event if (availableDestinations.TryGetValue(destinationName, out existingConfiguration)) { availableDestinations[destinationName] = parameters; RfcConfigurationEventArgs eventArgs = new RfcConfigurationEventArgs(RfcConfigParameters.EventType.CHANGED, parameters); System.Diagnostics.Trace.WriteLine("Fire change event " + eventArgs.ToString() + " for destination " + destinationName); // fire changed event if (ConfigurationChanged != null) { ConfigurationChanged(destinationName, eventArgs); } } else { availableDestinations[destinationName] = parameters; } } }
/// <summary> /// Called by constructor /// </summary> /// <param name="serverName"></param> public void AddParameters(string serverName, string progId)//, string destinationName) { // temp hard-coded for prototyping string destinationName = "SAP_IDOC_DESTINATION_CONFIG"; RfcConfigParameters parameters = new RfcConfigParameters(); parameters.Add(RfcConfigParameters.Name, serverName); parameters.Add(RfcConfigParameters.RepositoryDestination, destinationName); parameters.Add(RfcConfigParameters.GatewayHost, "10.2.17.78"); parameters.Add(RfcConfigParameters.GatewayService, "3300"); parameters.Add(RfcConfigParameters.ProgramID, progId); parameters.Add(RfcConfigParameters.RegistrationCount, "1"); RfcConfigParameters existingConfiguration; //if a destination of that name existed before, we need to fire a change event if (availableDestinations.TryGetValue(serverName, out existingConfiguration)) { availableDestinations[serverName] = parameters; RfcConfigurationEventArgs eventArgs = new RfcConfigurationEventArgs(RfcConfigParameters.EventType.CHANGED, _parameters); System.Diagnostics.Trace.WriteLine("Fire change event " + eventArgs.ToString() + " for destination " + serverName); // fire changed event if (ConfigurationChanged != null) { ConfigurationChanged(serverName, eventArgs); } } else { availableDestinations[serverName] = parameters; } }
/// <summary> /// Called from constructor /// </summary> /// <param name="locationConfigDom">Xml containing parameters, passed by BizTalk</param> public void UpdateParameters(string serverName, string destinationName, XmlDocument configDOM) { RfcConfigParameters parameters = new RfcConfigParameters(); parameters.Add(RfcConfigParameters.RepositoryDestination, destinationName); parameters.Add(RfcConfigParameters.Name, serverName); parameters.Add(RfcConfigParameters.GatewayHost, SAPIDocUtils.Extract(configDOM, "/Config/gatewayHost").ToString()); parameters.Add(RfcConfigParameters.GatewayService, SAPIDocUtils.Extract(configDOM, "/Config/gatewayService").ToString()); parameters.Add(RfcConfigParameters.ProgramID, SAPIDocUtils.Extract(configDOM, "/Config/programID").ToString()); parameters.Add(RfcConfigParameters.RegistrationCount, SAPIDocUtils.Extract(configDOM, "/Config/registrationCount").ToString()); parameters.Add(RfcConfigParameters.Trace, SAPIDocUtils.ExtractUInt(configDOM, "/Config/rfcTrace").ToString()); RfcConfigParameters existingConfiguration; //if a destination of that name existed before, we need to fire a change event if (availableDestinations.TryGetValue(serverName, out existingConfiguration)) { availableDestinations[serverName] = parameters; RfcConfigurationEventArgs eventArgs = new RfcConfigurationEventArgs(RfcConfigParameters.EventType.CHANGED, parameters); System.Diagnostics.Trace.WriteLine("Fire change event " + eventArgs.ToString() + " for destination " + serverName); // fire changed event if (ConfigurationChanged != null) { ConfigurationChanged(serverName, eventArgs); } } else { availableDestinations[serverName] = parameters; } }
//allows adding or modifying a destination for a group/server selection public void AddOrEditDestination(string name, int poolSize, string user, string password, string language, string client, string messageServerService, string messageServerHost, string logonGroup) { //in productive code the given parameters should be checked for validity, e.g. that name is not null //as this is not relevant for the example, we omit it here RfcConfigParameters parameters = new RfcConfigParameters(); parameters[RfcConfigParameters.Name] = name; parameters[RfcConfigParameters.MaxPoolSize] = Convert.ToString(poolSize); parameters[RfcConfigParameters.IdleTimeout] = Convert.ToString(6); // we keep connections for 10 minutes parameters[RfcConfigParameters.User] = user; parameters[RfcConfigParameters.Password] = password; parameters[RfcConfigParameters.Client] = client; parameters[RfcConfigParameters.Language] = language; parameters[RfcConfigParameters.MessageServerService] = messageServerService; parameters[RfcConfigParameters.MessageServerHost] = messageServerHost; parameters[RfcConfigParameters.LogonGroup] = logonGroup; RfcConfigParameters existingConfiguration; //if a destination of that name existed before, we need to fire a change event if (availableDestinations.TryGetValue(name, out existingConfiguration)) { availableDestinations[name] = parameters; RfcConfigurationEventArgs eventArgs = new RfcConfigurationEventArgs(RfcConfigParameters.EventType.CHANGED, parameters); MessageBox.Show("Fire change event " + eventArgs.ToString() + " for destination " + name); changeHandler(name, eventArgs); } else { availableDestinations[name] = parameters; } //MessageBox.Show("Added application server destination " + name); }
//allows adding or modifying a destination for a specific application server public void AddEditDestination(string name, int poolSize, string user, string password, string language, string client, string applicationServer, string systemNumber) { // We need to check the given parameters for validity, e.g. that name is not null as this is not // relevant RfcConfigParameters newConfigParameters = new RfcConfigParameters(); newConfigParameters[RfcConfigParameters.Name] = name; newConfigParameters[RfcConfigParameters.PeakConnectionsLimit] = Convert.ToString(poolSize); newConfigParameters[RfcConfigParameters.IdleTimeout] = Convert.ToString(10); // we keep connections for 10 minutes newConfigParameters[RfcConfigParameters.User] = user; newConfigParameters[RfcConfigParameters.Password] = password; newConfigParameters[RfcConfigParameters.Client] = client; newConfigParameters[RfcConfigParameters.Language] = language; newConfigParameters[RfcConfigParameters.AppServerHost] = applicationServer; newConfigParameters[RfcConfigParameters.SystemNumber] = systemNumber; RfcConfigParameters existingConfiguration; //if a destination of that name existed before, we need to fire a change event if (sapDestinations.TryGetValue(name, out existingConfiguration)) { sapDestinations[name] = newConfigParameters; RfcConfigurationEventArgs eventArgs = new RfcConfigurationEventArgs(RfcConfigParameters.EventType.CHANGED, newConfigParameters); Console.WriteLine("Fire change event " + eventArgs.ToString() + " for destination " + name); changeHandler(name, eventArgs); } else { sapDestinations[name] = newConfigParameters; } Console.WriteLine("Added application server destination " + name); // print the destination attributwes printDestination(name); }
//allows adjusting the pool size of existing destinations at runtime //if such a destination existed public bool AdjustPoolSize(string destinationName, int newPoolSize) { if (destinationName != null) { RfcConfigParameters existingConfiguration; //if a destination of that name exists, we can actually adjust it if (sapDestinations.TryGetValue(destinationName, out existingConfiguration)) { existingConfiguration[RfcConfigParameters.PeakConnectionsLimit] = Convert.ToString(newPoolSize); RfcConfigurationEventArgs eventArgs = new RfcConfigurationEventArgs(RfcConfigParameters.EventType.CHANGED, existingConfiguration); Console.WriteLine("Fire change event " + eventArgs.ToString() + " (poolsize adjusted) for destination " + destinationName); changeHandler(destinationName, eventArgs); return true; } } return false; }