Line 8: |
Line 8: |
| | | |
| * Clients create, modify and browse different types of resources ([[Sugar_Network/Concept#Resources|resources]] from conceptual point of view, [[Platform_Team/Sugar_Network/API#Resources|resources]] from the API point of view) on a server; | | * Clients create, modify and browse different types of resources ([[Sugar_Network/Concept#Resources|resources]] from conceptual point of view, [[Platform_Team/Sugar_Network/API#Resources|resources]] from the API point of view) on a server; |
− | * If this server is a [[#Node_servers|Node]] server, the system will take care about [[#Synchronisation|synchronizing]] its resources with other Node servers and, finally, with the central one, the [[#Master_server|Master]] server. | + | * If this server is a [[#Node_servers|Node]] server, the system will take care about [[#Synchronization|synchronizing]] its resources with other Node servers and, finally, with the central one, the [[#Master_server|Master]] server. |
| | | |
| === Components === | | === Components === |
Line 25: |
Line 25: |
| | | |
| * [[#Master_server|Master]] server that keeps the whole Sugar Network information, clients might connect directly to this server (on-line case) or indirectly via Node servers (off-line case); | | * [[#Master_server|Master]] server that keeps the whole Sugar Network information, clients might connect directly to this server (on-line case) or indirectly via Node servers (off-line case); |
− | * Optional [[#Node_servers|Node]] servers, contain a [[#Synchronisation|synchronised]] copy of central server (might be not for the entire Network to save storage space); | + | * Optional [[#Node_servers|Node]] servers, contain a [[#Synchronization|synchronised]] copy of central server (might be not for the entire Network to save storage space); |
| | | |
| In all cases the server [[Platform_Team/Sugar_Network/API|API]] is the same for clients. But depending on connectivity, clients might be connected to the [[#Master_server|Master]] server or to a [[#Node_servers|intermediate server]]. | | In all cases the server [[Platform_Team/Sugar_Network/API|API]] is the same for clients. But depending on connectivity, clients might be connected to the [[#Master_server|Master]] server or to a [[#Node_servers|intermediate server]]. |
Line 41: |
Line 41: |
| * connectivity is not cheap and its usage needs to be minimized. | | * connectivity is not cheap and its usage needs to be minimized. |
| | | |
− | Node servers provide full featured [[Platform_Team/Sugar_Network/API|API]] as the Master does. Nodes need to be [[#Synchronisation|synchronized]]. | + | Node servers provide full featured [[Platform_Team/Sugar_Network/API|API]] as the Master does. Nodes need to be [[#Synchronization|synchronized]]. |
− | | |
− | === Synchronisation ===
| |
− | | |
− | To let Network participant, connected to particular [[#Node_servers|Node server]], interact with people from another Node servers or with people from the Internet, Node servers need to be synchronized.
| |
− | | |
− | Server might be synchronised:
| |
− | | |
− | * With the Master, if connectivity presents;
| |
− | * With the Master or any other Node servers via the [[Wikipedia:Sneakernet|Sneakernet]].
| |
| | | |
| == Conceptual level == | | == Conceptual level == |
Line 96: |
Line 87: |
| === Implementations === | | === Implementations === |
| | | |
− | * [[Platform_Team/Sugar_Network/Mejorar_Sistema|Mejorar Sistema]]. | + | * [[Platform_Team/Sugar_Network/Web_UI|Web UI]]. |
| + | |
| + | == Synchronization == |
| + | |
| + | To let Network participant, connected to particular [[#Node_servers|Node server]], interact with people from another Node servers or with people from the Internet (Master server), Node servers need to be synchronized. |
| + | |
| + | Server might be synchronized: |
| + | |
| + | * With the Master, if connectivity presents; |
| + | * With the Master or any other Node servers via the [[Wikipedia:Sneakernet|Sneakernet]]. |
| + | |
| + | === Sneakernet === |
| + | |
| + | Packets' structure: |
| + | |
| + | * '''PUSH''' packet: |
| + | :* {{Code|type}}: {{Code|push}} |
| + | :* {{Code|sender}}: sender's GUID to push from |
| + | :* {{Code|[receiver]}}: receiver's GUID to push to, optional for packets from master |
| + | :* {{Code|sequence}}: Sequence associated with packet's payload |
| + | |
| + | * '''ACK''' packet: |
| + | :* {{Code|type}}: {{Code|ack}} |
| + | :* {{Code|sender}}: master's GUID |
| + | :* {{Code|receiver}}: receiver's GUID ack is intended for |
| + | :* {{Code|push_sequence}}: original PUSH packet's sequence |
| + | :* {{Code|pull_sequence}}: Sequence after merging original PUSH packet |
| + | |
| + | * '''PULL''' packet: |
| + | :* {{Code|type}}: {{Code|pull}} |
| + | :* {{Code|sender}}: sender's GUID to pull to |
| + | :* {{Code|receiver}}: receiver's GUID to pull from |
| + | :* {{Code|sequence}}: Sequence to pull for |
| | | |
| == Getting involved == | | == Getting involved == |