Skip to content

Gxs (Transfer)

David Gerber edited this page Aug 19, 2023 · 14 revisions

Service type: none.

This is the transfer system used by all Gxs services.

Items

Item Subtype Purpose
GxsSyncGroupRequestItem 1 Requests a GxsSyncGroupItem. Sent every minute.
GxsSyncGroupItem 2 Contains a group id which needs to be transferred. Is typically sent within a list of many, in a transaction.
GxsSyncGroupStatsItem 3 Requests or contains statistics about a group (number of posts and last timestamp).
GxsTransferGroupItem 4 Contains the Gxs group data.
XXX 5 Encrypted data item.
XXX 6 Session key item.
GxsSyncMessageItem 8 Contains a group id and a message id that needs to be transferred. It typically sent withint a list of many, in a transaction.
GxsSyncMessageRequestItem 16 Requests a GxsSyncMessageItem. Sent for every subscribed group, every minute.
GxsTransferMessageItem 32 Contains the Message data
GxsTransactionItem 64 Controls transactions which is a way to send a collection of items.
XXX 128 Group publish key item.
GxsSyncNotifyItem 144 Tell the peer that there have been changes and it should request them now.

Transactions

The transfer of data is done using transactions. Some items are used within transactions, others are sent directly.

Group syncing

Each minute, Heike asks Juergen if it has new groups by sending a GxsSyncGroupRequestItem containing the last syncing time.

Juergen checks its list of subscribed groups and sends the ids of all of them that have been updated since that last time in a GROUP_LIST_RESPONSE transaction with many GxsSyncGroupItems.

Heike checks against all the groups she already has and requests those that are more recent on Juergen's end by sending a GROUP_LIST_REQUEST transaction with many GxsSyncGroupItems.

Juergen sends back all the groups requested by Heike that is has by doing a transfer transaction.

It's also possible to request groups directly. For example Heike sees an identity identifier on the chat that she doesn't have. She will request them directly from Juergen by sending GxsSyncGroupItems with a GROUP_LIST_REQUEST.

Retroshare naming

Xeres Retroshare
GxsSyncGroupRequestItem RsNxsSyncGrpReqItem
GxsSyncGroupItem RsNxsSyncGrpItem
GxsSyncGroupStatsItem RsNxsSyncGrpStatsItem
GxsTransferGroupItem RsNxsGrp
GxsTransactionItem RsNxsTransacItem
XXX RsNxsGroupPublishKeyItem
XXX RsNxsEncryptedDataItem
GxsSyncMessageRequestItem RsNxsSyncMsgReqItem
GxsSyncMessageItem RsNxsSyncMsgItem
GxsSyncNotifyItem RsNxsPullRequestItem
GxsTransferMessageItem RsNxsMsg
Clone this wiki locally