Difference between revisions of "GeometryServiceNetworkProtocol"

(Added in specifics about GSNet Header stufff. WIP still.)
(Remove references to pkg)
 
(17 intermediate revisions by 2 users not shown)
Line 3: Line 3:
 
----
 
----
  
The Geometry Service Network (GSNet) Protocol is a TCP/IP based protocol designed to facilitate socketed communications between Geometry Service Nodes on a network.  A Geometry Service Node is defined as any softwares that supports communication via the GSNet Protocol.
+
{|
 +
|width=344 valign=top|[[Image:GSNet_Symbol.png|left|top|GSNet]]
 +
|The Geometry Service Network (GSNet) Protocol is a TCP/IP based protocol designed to facilitate socketed communications between Geometry Service Nodes on a network.  A Geometry Service Node is defined as any softwares that supports communication via the GSNet Protocol.
 +
<br />
 +
__TOC__
 +
|}
  
<br />
 
 
----
 
----
  
==Visual GSNet Msg Breakdown==
 
[[Image:GSNetProtocol.png]]
 
  
----
 
  
==GSNet Msg==
+
=GSNet Msg Description=
===Header===
+
==Header==
The header of the GSNet Msg contains the information necessary for quickly determining authenticity, type and length.  Geometry Service's network library, libNetwork, is built upon BRL-CAD's networking library: libPKG.  This causes the header byte layout to look like this:
+
The header of the GSNet Msg contains the information necessary for quickly determining authenticity, type and length.  Geometry Service's network library, libNetwork, has a header byte layout that looks like this:
 +
<br /><br />
 
   
 
   
{|border="1"
+
{|style="border-collapse: separate; border-spacing: 0; border-width: 1px; border-style: solid; border-color: #666699; padding: 0;"
|width="180"|'''Element'''
+
|style="border: 1px solid #666699; background-color: #666699; color: #FFFFFF; width: 180px;"|'''Element'''
|width="180"|'''Length'''
+
|style="border: 1px solid #666699; background-color: #666699; color: #FFFFFF; width: 180px;"|'''Length'''
|width="180"|'''Value'''
+
|style="border: 1px solid #666699; background-color: #666699; color: #FFFFFF; width: 180px;"|'''Value'''
 
|-
 
|-
|Magic1
+
|style="border: 1px solid #666699;"|MsgType
|int16 (2 Bytes)
+
|style="border: 1px solid #666699;"|int16 (2 bytes)
|Always 0x41FE
+
|style="border: 1px solid #666699;"|
 
|-
 
|-
|Magic2
+
|style="border: 1px solid #666699;"|MessageLength
|int16 (2 Bytes)
+
|style="border: 1px solid #666699;"|int32 (4 bytes)
|Always 0x5309
+
|style="border: 1px solid #666699;"|Does *NOT* include the type or length, so is packet size - 6
 
|-
 
|-
|MessageLength
+
|style="border: 1px solid #666699;"|MessageUUID
|int32 (4 bytes)
+
|style="border: 1px solid #666699;"|[[GSNet_String|String (Variable bytes)]]
|
+
|style="border: 1px solid #666699;"|
 
|-
 
|-
|MsgType
+
|style="border: 1px solid #666699;"|HasRegardingUUID
|int16 (2 bytes)
+
|style="border: 1px solid #666699;"|Boolean (1 byte)
|
+
|style="border: 1px solid #666699;"|
 
|-
 
|-
|MessageUUID
+
|style="border: 1px solid #666699;"|RegardingMessageUUID
|[[IBME_NETWORKPROTO_STRING|String (Variable bytes)]]
+
|style="border: 1px solid #666699;"|[[GSNet_String|String (Variable bytes)]]
|
+
|style="border: 1px solid #666699;"|
|-
+
|HasRegardingUUID
+
|Boolean (1 byte)
+
|
+
|-
+
|RegardingMessageUUID
+
|[[IBME_NETWORKPROTO_STRING|String (Variable bytes)]]
+
|
+
 
|}
 
|}
  
  
====libPKG Part====
+
* '''MsgType:''' 2 byte integer value that tells what type of message this is.
====GSNet Part====
+
* '''MessageUUID:''' Standard UUID for this message.  Currently stored as a string.
 +
* '''HasRegardingUUID:''' Boolean flag that indicates whether there is a Regarding UUID or not.
 +
* '''RegardingMessageUUID:''' Standard UUID that indicates this NetMsg is a response to another NetMsg.
  
 +
----
  
 +
==Data==
 
----
 
----
===Data===
+
The Data load of a NetMsg is, obivously, the important and unique part.  Data Loads can be as small as zero (in the case of a TypeOnlyMsg) or many kilobytes long.
----
+
  
 
+
Here is a list of [[NetMsgTypes|NetMsg types]] and here is a list of [[Common NetMsg Exchanges]].
List of [[NetMsgTypes]].
+
+
List of [[Common NetMsg Exchanges]]
+

Latest revision as of 16:12, 4 May 2011


GSNet
The Geometry Service Network (GSNet) Protocol is a TCP/IP based protocol designed to facilitate socketed communications between Geometry Service Nodes on a network. A Geometry Service Node is defined as any softwares that supports communication via the GSNet Protocol.




GSNet Msg Description[edit]

Header[edit]

The header of the GSNet Msg contains the information necessary for quickly determining authenticity, type and length. Geometry Service's network library, libNetwork, has a header byte layout that looks like this:

Element Length Value
MsgType int16 (2 bytes)
MessageLength int32 (4 bytes) Does *NOT* include the type or length, so is packet size - 6
MessageUUID String (Variable bytes)
HasRegardingUUID Boolean (1 byte)
RegardingMessageUUID String (Variable bytes)


  • MsgType: 2 byte integer value that tells what type of message this is.
  • MessageUUID: Standard UUID for this message. Currently stored as a string.
  • HasRegardingUUID: Boolean flag that indicates whether there is a Regarding UUID or not.
  • RegardingMessageUUID: Standard UUID that indicates this NetMsg is a response to another NetMsg.

Data[edit]


The Data load of a NetMsg is, obivously, the important and unique part. Data Loads can be as small as zero (in the case of a TypeOnlyMsg) or many kilobytes long.

Here is a list of NetMsg types and here is a list of Common NetMsg Exchanges.