Difference between revisions of "Common NetMsg Exchanges"

From BRL-CAD
(list initial connect pattern)
 
(2 intermediate revisions by one other user not shown)
Line 1: Line 1:
{{DesignDocument}}
+
This whole page needs to be redone with flow charts!
  
==Application Interconnect Connect==
+
Initial handshake:
This sequence of [[IBME_GeometryService#NetMsg_Class|NetMsg]] exchanges represents the communications between an external application (App M) attempting to connect to a running Geometry Service (App GS).  This sequence assumes success.
+
* Server sends [GS Remote Nodename Set]
 +
* Client sends [GS Remote Nodename Set]
 +
* Client sends [NewSessionReqMsg] (login/passwd)
 +
* Server sends [SessionInfoMsg] (uuid of session)
  
===Main Sequence===
+
Now ready to process
# App GS waits for incoming socket requests.
 
# App M creates a socket connection to App GS.
 
# App GS accepts the socket connection.
 
# App M and App GS are now connected at the socket level.
 
# App M sends a [[RemHostNameSET]] [[IBME_GeometryService#NetMsg_Class|NetMsg]] to App GS.
 
# App GS checks its RemHostName list for duplicates. '''(Alt #1)'''
 
# App GS sends a [[RemHostNameSETOK]] [[IBME_GeometryService#NetMsg_Class|NetMsg]] to App M.
 
# App GS sends a [[RemHostNameSET]] [[IBME_GeometryService#NetMsg_Class|NetMsg]] to App M.
 
# App GS waits for App M to send a [[RemHostNameSETOK]] [[IBME_GeometryService#NetMsg_Class|NetMsg]].
 
# App M sends a [[RemHostNameSETOK]] [[IBME_GeometryService#NetMsg_Class|NetMsg]].
 
# App M is now connected to the Geometry Service network.
 
# App M sends a [[NewSessionREQ]] [[IBME_GeometryService#NetMsg_Class|NetMsg]].
 
# App GS creates a new Session.
 
# App GS sends a [[NewSessionREQOK]] [[IBME_GeometryService#NetMsg_Class|NetMsg]].
 
 
 
===Alt Sequence #1===
 
:6a. App GS finds that the incoming Host is already on the HostList.  Either a duplicate name, or a duplicate connection. 
 
:6b. App GS sends App M a [[RemHostNameSETFAIL]] [[IBME_GeometryService#NetMsg_Class|NetMsg]].
 
:6c. App GS drops socket connection to App M.
 
:6d. App M drops socket connection to App GS.
 
 
 
 
 
==Application Request For Geometry==
 
This sequence of [[IBME_GeometryService#NetMsg_Class|NetMsg]] exchanges represents the communications between an external application (App M) as it requests Geometry from the Geometry Service (App GS).  This sequence assumes success and that both App M and App GS have completed the Application Interconnect Connect.
 
 
 
===Main Sequence===
 
# App M sends a [[GeometryREQ]] [[IBME_GeometryService#NetMsg_Class|NetMsg]] to App GS.
 
# App GS finds the request Geometry. '''(Alt #1)'''
 
# App GS sends App M a [[GeometryMANIFEST]] [[IBME_GeometryService#NetMsg_Class|NetMsg]].
 
# App GS sends App M as many [[GeometryCHUNK]] [[IBME_GeometryService#NetMsg_Class|NetMsgs]] as required in order to fulfill the [[GeometryMANIFEST]].
 
 
 
===Alt Sequence #1===
 
:2a. App GS does NOT find requested Geometry.
 
:2b. App GS sends App M a [[GeometryREQFAIL]] [[IBME_GeometryService#NetMsg_Class|NetMsg]].
 
 
 
 
 
==Application Interconnect Disconnect==
 
This sequence of [[IBME_GeometryService#NetMsg_Class|NetMsg]] exchanges represents the communications between an external application (App M) and a Geometry Service (App GS) during a disconnect event.  The disconnect event can be generated by either side as the effect will be the same.  This sequence assumes success and that App M initiates the disconnect event.
 
 
 
===Main Sequence===
 
# App M prepares all data for an impending disconnect event.
 
# App M sends a [[DisconnectREQ]] [[IBME_GeometryService#NetMsg_Class|NetMsgs]] to App GS.
 
# App GS receives the [[DisconnectREQ]]
 
# App GS prepares all of its data for an impending disconnect event.
 
# App GS commands the [[IBME_GeometryService#ConnectionManager_Class|ConnectionManager]] to close the appropriate socket.
 
# App M detects the closed socket.
 
# App M and App GS are disconnected.
 

Latest revision as of 13:25, 28 March 2011

This whole page needs to be redone with flow charts!

Initial handshake:

  • Server sends [GS Remote Nodename Set]
  • Client sends [GS Remote Nodename Set]
  • Client sends [NewSessionReqMsg] (login/passwd)
  • Server sends [SessionInfoMsg] (uuid of session)

Now ready to process