blob: ee1fd18d9677d0f98da0e7dcd12f1c5fb05638e0 (
plain) (
blame)
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
---------------------------------------------------------------------
Command: assign-id
Assign new ID to client, or fetch current ID
Purpose: assigning ID to clients so server can respond to that client
Compulsivity: manditory (core infrastructure)
More documentation: doc/messages
Reference implementation: mds-server
---------------------------------------------------------------------
Command: intercept
Sign up for reception of message
Optional header: Stop
Stop reception of messages if `yes`
Optional header: Priority
Signed 64-bit integer of reception priority (reversed of order)
Optional header: Modifying
Send message asynchronously and await modification if `yes`
Optional header: Length
Length of the message
Message: list of headers and header–value-pairs that qualifies
a message for reception, all messages qualifies if this
list is empty
Purpose: filter received message for clients and servers
Purpose: assigned interception order for modification of messages
Compulsivity: manditory (core infrastructure)
More documentation: doc/messages
Reference implementation: mds-server
---------------------------------------------------------------------
Command: echo
Echo back a message
Required header: Client ID
Your ID, provided by `ID assignment`
in response to `Command: assign-id`
Optional header: Length
Length of the message
Message: message to echo
Purpose: debugging and testing
Purpose: network heartbeat
Compulsivity: recommended for network enabled servers
Reference implementation: mds-echo
---------------------------------------------------------------------
Command: register
Register availability of a command for which you implement a service
Required header: Client ID
Your ID, provided by `ID assignment`
in response to `Command: assign-id`
Conditionally required header: Length
Required if: `Action: list`
Length of the message
Optional header: Action
Remove availability for registry if `remove`.
Wait until listed commands are available if `wait`,
however if a protocol becomes unavailable during this
wait period it will still be counted as available for
this wait action.
Send a list of availability commands if `list`.
Conditionally optional header: Time to live
Available and optional if: `Action: wait`
The maximum number of seconds to wait.
Message: List of values for the header `Command` that you implement
Purpose: Identify supported display server operations
Purpose: Initialisation process synchronisation
Compulsivity: highly recommended (infrastructure), programs may
stall a bit from time to time without it, or at
initialisation depending on the program's implementation
Reference implementation: mds-registry
---------------------------------------------------------------------
Command: reregister
Request that all servers resends `Command: register` with either
`Action: add` or without the `Action` header (does the same thing)
Purpose: Rebuild registry created with `Command: register` if the
registry server crashes
Compulsivity: highly recommended (infrastructure), programs may
think a protocol is not supported of the registry
server crashes if you do not implement this in your
server
---------------------------------------------------------------------
|