protected override void OnStart(string[] args) { // log ErrorLogger.Log(ErrorLogger.LogType.OUTBOUND_SERVICE_STARTING, DateTime.Now.ToString()); // get all configuration data List <Configuration> configs = ConfigurationDAO.GetApplications(); // get the master configuration Configuration masterConfig = ConfigurationDAO.GetAllConfigurations(); // gets the outgoing webservice configuration only List <Configuration> applications = ConfigurationUtility.GetIncomingWebservice(configs); applications.ForEach(delegate(Configuration appConfig) { OutboundHandler outboundHandler = new OutboundHandler(); string appName = appConfig.application.name; // set the app name outboundHandler.setApplicationName(appName); // set the master config outboundHandler.setMasterConfiguration(masterConfig); // set the static worker outboundHandler.setProcessingWorker(OutboundHandlerDAO.handleProcessingForOutboundHandler); // add to queue and run ThreadPool.QueueUserWorkItem(new WaitCallback(startOutboundProcessing), outboundHandler); }); }
public static void TestService() { // obtain a list of applications List <Application> applications = ApplicationDAO.Get(); // go through each application, get configurations foreach (Application app in applications) { // get the configuration List <Configuration> configurations = ConfigurationDAO.GetApplications(app); } }
protected override void OnStart(string[] args) { // log ErrorLogger.Log(ErrorLogger.LogType.INBOUND_SERVICE_STARTING, DateTime.Now.ToString()); // init thread dictionary this.socketDictionary = new Dictionary <int, Socket>(); // get all configuration data List <Configuration> configs = ConfigurationDAO.GetApplications(); // get return all incoming interface configurations List <Configuration> intefaceConfigs = ConfigurationUtility.GetIncomingInterfaces(configs); // start the interfaces by the database config intefaceConfigs.ForEach(delegate(Configuration appConfig) { // get the interfaces for this communication set List <Configuration> interfaces = ConfigurationDAO.GetInterfaceConfigration(appConfig.communication); // for each of the inbound interface threads, start them interfaces.ForEach(delegate(Configuration intConfig) { // get the outgoing database communication id Configuration brokerDBConfig = ConfigurationUtility.GetOutgoingDatabasesByApplicationId(configs, appConfig.application.id); // pass the db communication to the class's communication list since we intConfig.communications = new List <Communication>(); intConfig.communications.Add(brokerDBConfig.communication); // add to queue ThreadPool.QueueUserWorkItem(new WaitCallback(startInterface), intConfig); }); }); }
public void Start() { // based on the communication app id - get a list of applications that match this comm id List <Configuration> configurations = ConfigurationDAO.GetApplications(new Application() { id = this.incomingCommunication.applicationId }); // now get the app settings that are associated to this comm and app id ApplicationSetting appSetting = configurations.Find(c => c.communication.id == this.incomingCommunication.id) .applicationSetting; // changing this item in the db means you need to bounce the service if (appSetting.disabled) { return; } // changing this item in the db means you need to bounce the service if (appSetting.autoStart) { startListener(); } // anything in the while loop doesn't need to be bounced by the service while (true) { // set the broker each loop setBroker(); // check if it's running i.e. waiting/connected this.isStarted = (this.broker.interfaceStatusId == BrokerDAO.WAITING || this.broker.interfaceStatusId == BrokerDAO.CONNECTED); if (this.isStarted) { // if the system is already listening (from autoStart Flag) // begin accepting messages if (this.alreadyListening) { // begin feeding the messages in run(); } else { // otherwise, start the listener (i.e. waiting --> connected) startListener(); } } else { // if the system was already listening, and it's in "stopped" // then this means that someone shutdown the socket - so stop the listener if (this.alreadyListening) { stopListener(); } } // provide blocking on the thread if nothing is going on Thread.Sleep(1000); } }
private static bool copyOutgoingDatabase(Application inFromApplication, Application inToApplication, string directionType, string communicationType) { try { int toApplicationIdentity = inFromApplication.id; int fromApplicationIdentity = inToApplication.id; // get all applications List <Configuration> applicationList = ConfigurationDAO.GetApplications(new Application() { id = fromApplicationIdentity }); // get all communuication and direction Types Configuration masterConfigration = ConfigurationDAO.GetAllConfigurations(); // get the specific application direction and comm you want Configuration fromApplication = applicationList.Find(a => a.communicationType.name == communicationType && a.directionType.name == directionType); // communication translation identities int toDirectionTypeId = masterConfigration.directionTypes.Find(d => d.name == fromApplication.directionType.name).id; int toCommunicationTypeId = masterConfigration.communicationTypes.Find(c => c.name == fromApplication.communicationType.name).id; // create a new application object with your current application identity Application toApplication = new Application() { id = toApplicationIdentity }; // insert a new communication with your exsisting application Communication toCommunication = CommunicationDAO.PostUpdate(new Communication() { applicationId = toApplication.id, communicationTypeId = toCommunicationTypeId, directionTypeId = toDirectionTypeId }); // get the database_instance information (credential id, name, server, ip) of the communication identity. DatabaseInstance fromDatabaseInstance = masterConfigration.databaseInstances.Find(i => i.communicationId == fromApplication.communication.id); // get database_instance id of the copy from insert into new database_instance with info prior step DatabaseInstance toDatabaseInstance = new DatabaseInstance(); // copy individual values as not top copy the reference (we need it later) toDatabaseInstance = fromDatabaseInstance.ShallowCopy(); // override the communication id w/ the "to" communication id toDatabaseInstance.id = 0; toDatabaseInstance.communicationId = toCommunication.id; // insert new database instance - get the id from this request toDatabaseInstance = DatabaseInstanceDAO.PostUpdate(toDatabaseInstance); // get all database tables from the fromDatabaseInstance List <Configuration> fromDatabaseTables = ConfigurationDAO.GetDatabaseTables(fromDatabaseInstance); // get the database table relations List <DatabaseTableRelation> databaseTableRelations = masterConfigration.databaseTableRelations; // create a new database relation object DatabaseTableRelation databaseTableRelation = new DatabaseTableRelation() { id = 0, requiresIdentity = true, sourceDatabaseTableId = -1, targetDatabaseTableId = -1 }; // foreach table that belongs to the from database_instance, get the from database_table information fromDatabaseTables.ForEach(delegate(Configuration configurationTable) { // extract the database table from the configuration DatabaseTable fromDatabaseTable = new DatabaseTable() { id = configurationTable.databaseTable.id, databaseInstanceId = fromDatabaseInstance.id, name = configurationTable.databaseTable.name }; // create new database table DatabaseTable toDatabaseTable = new DatabaseTable() { databaseInstanceId = toDatabaseInstance.id, name = fromDatabaseTable.name }; // insert new table into database_table with fromDatabaseTable information but use toDatabaseInstanceId toDatabaseTable = DatabaseTableDAO.PostUpdate(toDatabaseTable); // check for prior source relation if (ConfigurationUtility.IsDatabaseTableRelation(configurationTable.databaseTable, databaseTableRelations)) { databaseTableRelation.sourceDatabaseTableId = toDatabaseTable.id; } // check for prior target relation if (ConfigurationUtility.IsDatabaseTableRelation(configurationTable.databaseTable, databaseTableRelations, true)) { databaseTableRelation.targetDatabaseTableId = toDatabaseTable.id; } // based on the fromDatabaseTable get all column sets List <Configuration> fromColumnSets = ConfigurationDAO.GetDatabaseColumns(fromDatabaseTable); // foreach columnset that belongs to fromDatabaseColumn copy all information (except for the fromDatabaseTableId) fromColumnSets.ForEach(delegate(Configuration configurationColumnSet) { // define the column set ColumnSet fromColumnSet = new ColumnSet(); ColumnSet toColumnSet = new ColumnSet(); // get the column set from the configuration list fromColumnSet = configurationColumnSet.columnSet; fromColumnSet.databaseTableId = configurationColumnSet.databaseTable.id; // do a shallow copy of its properties and override the ones you need toColumnSet = fromColumnSet.ShallowCopy(); toColumnSet.id = 0; toColumnSet.databaseTableId = toDatabaseTable.id; // insert new toColumnSet using new toDAtabaseTable.id toColumnSet = ColumnSetDAO.PostUpdate(toColumnSet); }); }); // if relation source or target is not negative one - insert new relation if (databaseTableRelation.sourceDatabaseTableId != -1 && databaseTableRelation.targetDatabaseTableId != -1) { databaseTableRelation = DatabaseTableRelationDAO.PostUpdate(databaseTableRelation); } } catch (Exception ex) { string fromApplicationId = inFromApplication.id.ToString(); string toApplicationId = inToApplication.id.ToString(); ErrorLogger.LogError(ex, "CopyConfigurationUtility.CopyOutgoingDatabase(fromApplication, toApplication, directionType,communicationType)", fromApplicationId + "|" + toApplicationId + "|" + directionType + "|" + communicationType); return(false); } return(true); }