Difference between revisions of "Common NetMsg Exchanges"

(list initial connect pattern)
 
(One intermediate revision by one user not shown)
Line 1: Line 1:
{{DesignDocument}}
+
This whole page needs to be redone with flow charts!
  
==Inter-Application 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.
+
 
+
 
+
==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 Inter-Application 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]].
+
+
+
 
+
==Inter-Application 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 14: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