Description This function disconnects the communication link between master and remote for all active remote nodes in a connections array but does not halt or stop the associated remote FRED instances, which will continue to run on the remotes. When the function is issued, a snap shot of the current connections array will be saved to a CSV file (including inactive connections) so that the connections to the remotes can be restored at a later time using IPCReconnect().
Syntax count = IPCDisconnect( connections(), snapShot )
Parameters count (Long) Returned number of remote nodes that were successfully disconnected.
connections() As T_IPCINSTANCE An array of T_IPCINSTANCE structures, with each structure defining the connection information for a remote node.
snapShot As String Full path file name (CSV extension) to which the status of all remote nodes will be written (including inactive connections). If this argument is an empty string, then a snap shot file with the name, "AutoSavedConnections.csv", will be created in the default Undo directory (FRED preference setting). This file can be used later with the IPCReconnect() function in order to re-establish communication between master and remote nodes.
Example The example below demonstrates how to to load the connections() array with remote node connection information stored in a configuration file and then go through a series of connect, query and reconnect commands before finally terminating the remote FRED instances.
Sub Main
EnableTextPrinting(True) ClearOutputWindow()
'Use a CSV file to populate the connections array Dim nRemoteLoad As Long Dim connections() As T_IPCINSTANCE Dim configFile As String, configLocation As String configLocation = GetDocDir() & "\" configFile = "DCTestBed_Connections.csv" nRemoteLoad = IPCLoadConfigFile( connections(), configLocation & configFile )
'Connect to the remotes Dim nConnect As Long nConnect = IPCConnect( connections() )
'Query the status of the connections Dim nQuery As Long nQuery = IPCQueryStatus( connections(), "detail" )
'Disconnect from the remote nodes and save a snapshot file of the connections array Dim nDisconnect As Long Dim snapShot As String snapShot = configLocation & "DCTestBed_Reconnect.csv" nDisconnect = IPCDisconnect( connections(), snapShot )
'Now reconnect Dim nReconnect As Long nReconnect = IPCReconnect( connections(), snapShot )
'Query the status again nQuery = IPCQueryStatus( connections(), "detail" )
'Terminate the connections Dim nTerminate As Long nTerminate = IPCTerminate( connections(), "sterilize", "1d" )
End Sub
The IPC commands generally report information to the output window that may be used as diagnostics. For the example script shown above, the following output is reported: [MASTER]IPCLoadConfigFile: 3 of 3 connections read from 'C:\temp\DCTestBed_Connections.csv'
index active speed host status 1 true 100 computer1 --- 2 true 100 computer2 --- 3 true 100 computer3 ---
[MASTER]IPCConnect: 3 of 3 Remote FRED instances connected and running
index host result message 1 computer1 connected --- 2 computer2 connected --- 3 computer3 connected ---
[MASTER]IPCQueryStatus: 3 connections queried
index host message 1 computer1 idle 2 computer2 idle 3 computer3 idle
index host handle cmd handle message 1 NI_00000012 HPOL check PING IDLE idle 2 NI_00000013 HPOL check PING IDLE idle 3 NI_00000014 HPOL check PING IDLE idle
[MASTER]IPCDisconnect: 3 of 3 Remote FRED instances disconnected but still running
[MASTER]IPCReconnect: 3 of 3 Remote FRED instances reconnected
index host message 1 computer1 reconnected - idle 2 computer2 reconnected - idle 3 computer31 reconnected - idle
[MASTER]IPCQueryStatus: 3 connections queried
index host message 1 computer1 idle 2 computer2 idle 3 computer3 idle
index host handle cmd handle message 1 NI_00000015 HPOL check PING IDLE idle 2 NI_00000016 HPOL check PING IDLE idle 3 NI_00000017 HPOL check PING IDLE idle
[MASTER]IPCTerminate: 3 of 3 Remote FRED instance terminations initiated
index host message 1 computer1 terminate - initiated 2 computer2 terminate - initiated 3 computer3 terminate - initiated
See Also Distributed Computing Script Commands
|