| Quintiq file version 2.0 | 
| #parent: #root | 
| Method QuitAsBootNode | 
| { | 
|   Description: 'Quit being a BootNode, the new BootNode must be a known System within the Domain.' | 
|   TextBody: | 
|   [* | 
|     // Jacky CHAN Apr-28-2016 (created) | 
|     // Refresh values from model settings | 
|     SettingsEngine::SettingsEngine().ProcessUpdates(); | 
|      | 
|     bootNodeHost := LibDEF_Util::GetSettingValueBootNodeHostName(); | 
|     bootNodePort := LibDEF_Util::GetSettingValueBootNodePortNumber(); | 
|      | 
|     event := this.EventCreate( bootNodeHost, bootNodePort, false ); | 
|      | 
|     // if another system is a BootNode | 
|     if( bootNodeHost <> "" and bootNodePort > 0 ) | 
|     { | 
|       // convert localhost to current host name | 
|       bootNodeHost := LibDEF_Util::ConvertLocalhost( bootNodeHost ); | 
|      | 
|       detail := "Host name: " + bootNodeHost + "; Port number: " + [String]bootNodePort; | 
|      | 
|       newBootNode := LibDEF_System::FindSystemByCoordinate( this, bootNodeHost, bootNodePort ); | 
|       if( not isnull( newBootNode ) ) | 
|       { | 
|         newBootNode.SetAsBootNode(); | 
|      | 
|         // Updates the IntegrationEvent with BootNode's information | 
|         event.Update( newBootNode ); | 
|      | 
|         LibDEF_Util::EventLog( event, "This System is no longer the BootNode." ); | 
|         LibDEF_Util::EventLog( event, "Another System has become the BootNode. BootNode has been updated. " + detail ); | 
|         LibDEF_Util::EventLog( event, "Sending request to peers to synchronize configuration." ); | 
|         LibDEF_IntegrationEvent::EventComplete( event ); | 
|      | 
|         // request all other Systems (including the new BootNode) to read model settings | 
|         traverse( this.GetOtherPeers( true ), Elements, system ) | 
|         { | 
|           this.SendConfigurationRequestSyncConfig( system ); | 
|         } | 
|       } | 
|       else | 
|       { | 
|         LibDEF_Util::EventLogError( event, | 
|                                     "Failed to quit as BootNode.", | 
|                                     "Cannot quit as BootNode, the new BootNode must be a known System within the Domain. Check the model settings." ); | 
|       } | 
|     } | 
|     else | 
|     { | 
|       LibDEF_Util::EventLogError( event, | 
|                                   "Failed to quit as BootNode.", | 
|                                   "To let the BootNode System leave the domain, another System must be assigned as the BootNode first. Check the model settings." ); | 
|      | 
|     } | 
|   *] | 
| } |