forked from saros-project/saros
-
Notifications
You must be signed in to change notification settings - Fork 0
/
architecture.chralx
69 lines (50 loc) · 1.93 KB
/
architecture.chralx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
//For syntax and semantics of this file please
//refer to the primer.chralx file located in
//the same folder as this file.
-- root saros: de.fu_berlin.inf.dpp
Two Saros peers collaborate on some task by
entering a session. At the core of Saros is the
session_management component which is responsible
for the handling of activities and the delegation
of tasks to other components.
-- component session_management
+= de.fu_berlin.inf.dpp.session
+= de.fu_berlin.inf.dpp.project
-- session_management => invitation
Operational_transformation (or concurrency management)
receives incoming and outgoing activities from
session_management. Operational_transformation is
responsible for maintaing the shared files in a
consistent state. The algorithm used to maintain consistency
is the Jupiter algorithm.
-- component operational_transformation
+= de.fu_berlin.inf.dpp.concurrent
-- session_management => operational_transformation
The ui component encompasses all visible elements
provided by Saros that the user can interact with.
It represents user actions and is the data source
for Saros. User actions are captured by the ui
component, later to be converted to activities
by calls the session_management's activity producers.
-- component ui
+= de.fu_berlin.inf.dpp.ui
+= org.eclipse.jface
-- ui => session_management
-- ui => invitation
The invitation component is used to establish a
session between peers. Project data, as well as
session metadata are exchanged before the actual
session begins.
-- component invitation
+= de.fu_berlin.inf.dpp.negotiation
+= de.fu_berlin.inf.dpp.invitation
This data exchange is done via the network layer.
-- invitation => network
The network layer is responsible for the exchange
of activities via the wire. The protocol used
is XMPP.
-- component network
+= de.fu_berlin.inf.dpp.net
Session_management uses the network layer to
exchange activities between peers.
-- session_management => network