Latest revision |
Your text |
Line 1: |
Line 1: |
− | ---- | + | {{DesignDocument}} |
− | =NetMsg Generic Templates= | + | |
− | ----
| + | |
− | The GSNet API provides several Template classes to be used or extended from. | + | ==Common Header Byte Format== |
| + | All [[IBME_GeometryService#NetMsg_Class|NetMsgs]] will contain a uniform header: |
| + | |
| + | |
| + | {|border="1" |
| + | |width="180"|'''Element''' |
| + | |width="180"|'''Length''' |
| + | |width="180"|'''Notes''' |
| + | |- |
| + | |Magic1 |
| + | |int16 (2 Bytes) |
| + | |Always 0x41FE |
| + | |- |
| + | |Magic2 |
| + | |int16 (2 Bytes) |
| + | |Always 0x5309 |
| + | |- |
| + | |MessageLength |
| + | |int32 (4 bytes) |
| + | | |
| + | |- |
| + | |MsgType |
| + | |int16 (2 bytes) |
| + | | |
| + | |- |
| + | |MessageUUID |
| + | |[[IBME_NETWORKPROTO_STRING|String (Variable bytes)]] |
| + | | |
| + | |- |
| + | |HasRegardingUUID |
| + | |Boolean (1 byte) |
| + | | |
| + | |- |
| + | |RegardingMessageUUID |
| + | |[[IBME_NETWORKPROTO_STRING|String (Variable bytes)]] |
| + | | |
| + | |} |
| + | |
| + | ==NetMsg Generic Templates== |
| + | The GSNet Protocol provides several Template classes to be used or extended from. |
| | | |
| * [[GenericOneByteMsg|Generic One Byte Msg]] | | * [[GenericOneByteMsg|Generic One Byte Msg]] |
| * [[GenericTwoBytesMsg|Generic Two Byte Msg]] | | * [[GenericTwoBytesMsg|Generic Two Byte Msg]] |
| * [[GenericFourBytesMsg|Generic Four Byte Msg]] | | * [[GenericFourBytesMsg|Generic Four Byte Msg]] |
− | * [[GenericEightByteMsg|Generic Eight Byte Msg]]
| |
| * [[GenericMultiByteMsg|Generic Multi Byte Msg]] | | * [[GenericMultiByteMsg|Generic Multi Byte Msg]] |
| * [[GenericOneStringMsg|Generic One String Msg]] | | * [[GenericOneStringMsg|Generic One String Msg]] |
− | * [[GenericMultiStringMsg|Generic Multi-String Msg]]
| |
− |
| |
− | ----
| |
| | | |
− | =NetMsg MsgTypes= | + | ==NetMsg MsgTypes== |
− | ----
| + | Some [[IBME_GeometryService#NetMsg_Class|NetMsgs]] will need to have custom bodies. Here is a list of [[IBME_GeometryService#NetMsg_Class|NetMsgs]], their related MsgTypes, and links to details on that specific [[IBME_GeometryService#NetMsg_Class|NetMsg]]: |
− | | + | |
− | Some NetMsgs will need to have custom bodies. Here is a list of NetMsgs, their related MsgTypes, and links to details on that specific NetMsg: | + | |
− | <br /><br />
| + | {| |
− | '''NOTE:''' This list is *NOT* up-to-date as of 3.25.11
| + | !width="70" align="left"|MsgTypeID |
− | <br /><br />
| + | !width="70" align="left"|Name |
− | '''TODO:''' Replace this with Doxy files
| + | !align="left"|Description |
− | <br /><br />
| |
− | | |
− | {|style="border-collapse: separate; border-spacing: 0; border-width: 1px; border-style: solid; border-color: #666699; padding: 0;"
| |
− | |style="border: 1px solid #666699; background-color: #666699; color: #FFFFFF; width: 90px;"|'''MsgType ID'''
| |
− | |style="border: 1px solid #666699; background-color: #666699; color: #FFFFFF; width: 200px;"|'''Name'''
| |
− | |style="border: 1px solid #666699; background-color: #666699; color: #FFFFFF; width: 180px;"|'''Parent Class'''
| |
− | |style="border: 1px solid #666699; background-color: #666699; color: #FFFFFF;"|'''Additional Info'''
| |
− | |-
| |
− | |style="border: 1px solid #666699;"|0x0042
| |
− | |style="border: 1px solid #666699;"|RUALIVE
| |
− | |style="border: 1px solid #666699;"|[[TypeOnlyMsg]]
| |
− | |style="border: 1px solid #666699;"|Ping without time info (necessary?)
| |
− | |-
| |
− | |style="border: 1px solid #666699;"|0x0043
| |
− | |style="border: 1px solid #666699;"|IMALIVE
| |
− | |style="border: 1px solid #666699;"|[[TypeOnlyMsg]]
| |
− | |style="border: 1px solid #666699;"|Pong without time info (necessary?)
| |
− | |-
| |
− | |style="border: 1px solid #666699;"|0x0050
| |
− | |style="border: 1px solid #666699;"|Failure | |
− | |style="border: 1px solid #666699;"|[[GenericOneByteMsg]]
| |
− | |style="border: 1px solid #666699;"|1 byte 'error code'
| |
− | |-
| |
− | |style="border: 1px solid #666699;"|0x0051
| |
− | |style="border: 1px solid #666699;"|Success
| |
− | |style="border: 1px solid #666699;"|[[GenericOneByteMsg]]
| |
− | |style="border: 1px solid #666699;"|1 byte 'success code'
| |
− | |-
| |
− | |style="border: 1px solid #666699;"|0x0060
| |
− | |style="border: 1px solid #666699;"|PING
| |
− | |style="border: 1px solid #666699;"|[[GenericEightByteMsg]]
| |
− | |style="border: 1px solid #666699;"|8 byte time stamp for start time
| |
− | |-
| |
− | |style="border: 1px solid #666699;"|0x0062
| |
− | |style="border: 1px solid #666699;"|PONG
| |
− | |style="border: 1px solid #666699;"|[[GenericEightByteMsg]]
| |
− | |style="border: 1px solid #666699;"|8 byte time stamp for start time, dup of the ping value
| |
| |- | | |- |
− | |style="border: 1px solid #666699;"|0x0100 | + | |width="70"|0x0050 |
− | |style="border: 1px solid #666699;"|GS Remote Nodename Set | + | |width="70"|[[Failure]] |
− | |style="border: 1px solid #666699;"|[[GenericOneStringMsg]]
| + | |Uses [[GenericOneByteMsg|Generic One Byte Msg]] |
− | |style="border: 1px solid #666699;"|String is the Nodename | |
| |- | | |- |
− | |style="border: 1px solid #666699;"|0x0150 | + | |width="70"|0x0051 |
− | |style="border: 1px solid #666699;"|Disconnect Request | + | |width="70"|[[Success]] |
− | |style="border: 1px solid #666699;"|[[TypeOnlyMsg]]
| + | |Uses [[GenericOneByteMsg|Generic One Byte Msg]] |
− | |style="border: 1px solid #666699;"| | |
| |- | | |- |
− | |style="border: 1px solid #666699;"|0x0200 | + | |width="70"|0x0100 |
− | |style="border: 1px solid #666699;"|New Node on Network | + | |width="70"|[[RemHostNameSET]] |
− | |style="border: 1px solid #666699;"|[[GenericOneStringMsg]]
| + | | |
− | |style="border: 1px solid #666699;"|String is the Nodename | |
| |- | | |- |
− | |style="border: 1px solid #666699;"|0x0250 | + | |width="70"|0x0150 |
− | |style="border: 1px solid #666699;"|Full Nodename List Request | + | |width="70"|[[DisconnectREQ]] |
− | |style="border: 1px solid #666699;"| | + | | |
− | |style="border: 1px solid #666699;"|'''''Not Implemented Yet'''
| |
| |- | | |- |
− | |style="border: 1px solid #666699;"|0x0255 | + | |width="70"|0x0200 |
− | |style="border: 1px solid #666699;"|Full Nodename List | + | |width="70"|[[NewHostOnNet]] |
− | |style="border: 1px solid #666699;"| | + | | |
− | |style="border: 1px solid #666699;"|'''''Not Implemented Yet'''
| |
| |- | | |- |
− | |style="border: 1px solid #666699;"|0x0300 | + | |width="70"|0x0250 |
− | |style="border: 1px solid #666699;"|[[NewSessionReqMsg|New Session Request]] | + | |width="70"|[[FullHostListREQ]]* |
− | |style="border: 1px solid #666699;"|[[NetMsg]] | + | | |
− | |style="border: 1px solid #666699;"|Two strings, username and password
| |
| |- | | |- |
− | |style="border: 1px solid #666699;"|0x0305 | + | |width="70"|0x0255 |
− | |style="border: 1px solid #666699;"|[[SessionInfoMsg|Session Information]] | + | |width="70"|[[FullHostList]]* |
− | |style="border: 1px solid #666699;"|[[NetMsg]] | + | | |
− | |style="border: 1px solid #666699;"|One string, the session UUID
| |
| |- | | |- |
− | |style="border: 1px solid #666699;"|0x0400 | + | |width="70"|0x0300 |
− | |style="border: 1px solid #666699;"|[[GeometryReqMsg|Geometry Request]] | + | |width="70"|[[NewSessionREQ]]* |
− | |style="border: 1px solid #666699;"|[[GenericOneStringMsg]] | + | | |
− | |style="border: 1px solid #666699;"|Has additional custom fields.
| |
| |- | | |- |
− | |style="border: 1px solid #666699;"|0x0401 | + | |width="70"|0x0305 |
− | |style="border: 1px solid #666699;"|[[GeometryBoTReqMsg|BoT Geometry Request]] | + | |width="70"|[[NewSession]]* |
− | |style="border: 1px solid #666699;"|[[GenericOneStringMsg]] | + | | |
− | |style="border: 1px solid #666699;"|Requests geometry in BoT format, with exactly one BoT per region.
| |
| |- | | |- |
− | |style="border: 1px solid #666699;"|0x0402 | + | |width="70"|0x0310 |
− | |style="border: 1px solid #666699;"|[[GeometryListReqMsg|Geometry List Request]] | + | |width="70"|[[LogoutSession]] |
− | |style="border: 1px solid #666699;"|[[GenericOneStringMsg]] | + | | |
− | |style="border: 1px solid #666699;"|Requests a list of geometry artifacts at given location.
| |
| |- | | |- |
− | |style="border: 1px solid #666699;"|0x0403 | + | |width="70"|0x0400 |
− | |style="border: 1px solid #666699;"|[[GeometryListResMsg|Geometry List Results]] | + | |width="70"|[[GeometryREQ]] |
− | |style="border: 1px solid #666699;"|[[GenericMultiStringMsg]] | + | | |
− | |style="border: 1px solid #666699;"|Display a list of geometry artifact names.
| |
| |- | | |- |
− | |style="border: 1px solid #666699;"|0x0405 | + | |width="70"|0x0405 |
− | |style="border: 1px solid #666699;"|[[GeometryManifestMsg|Geometry Manifest]] | + | |width="70"|[[GeometryMANIFEST]] |
− | |style="border: 1px solid #666699;"|[[GenericMultiStringMsg]] | + | | |
− | |style="border: 1px solid #666699;"|List of 'object' names about to be received as chunks. ReUUID is the associated GeometryReqMsg UUID.
| |
| |- | | |- |
− | |style="border: 1px solid #666699;"|0x0410 | + | |width="70"|0x0410 |
− | |style="border: 1px solid #666699;"|[[GeometryChunkMsg|Geometry Chunk]] | + | |width="70"|[[GeometryCHUNK]] |
− | |style="border: 1px solid #666699;"|[[GenericMultiByteMsg]] | + | | |
− | |style="border: 1px solid #666699;"|Raw .g information. Chunks can be written to a file to produce a viable V5 .g db. ReUUID is the associated GeometryReqMsg UUID.
| |
| |} | | |} |