ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/cms/documentation/specification/protocols.txt
(Generate patch)

Comparing projects/cms/documentation/specification/protocols.txt (file contents):
Revision 1.1 by ajm, Sun Jan 28 18:35:31 2001 UTC vs.
Revision 1.5 by ajm, Sun Jan 28 20:29:32 2001 UTC

# Line 12 | Line 12 | Contents
12   - Client Control Protocol
13   - Client Data Protocol
14  
15 +
16   Conventions
17   -----------
18   All protocols in this document assume a valid connection of
19   the appropriate type has been made, and that data streams
20 < already available.  All strings should and will be
20 > are already available.  All strings should, and will be,
21   terminated with a \n (newline character) to indicate the end
22   of the message.  All messages are sent as ASCII Strings.
23  
24   Fixed protocol messages will appear in [] brackets, if there
25 < is a variety of options they will be seperated with the |
25 > is a variety of options they will be separated with the |
26   character.  For example:
27  
28      [OK|ERROR]
29 <    
29 >  
30   Indicates that the message "OK" OR the message "ERROR" will
31   be sent depending on the result of the last action.
32  
# Line 35 | Line 36 | of data that will be returned.  For example:
36  
37      {lastmodified}
38  
39 < Indicates that data indicating for use as last modified will
40 < be returned.    
39 > Indicates that data for use as 'last modified' will be
40 > returned.  
41  
42 < If ever [ERROR] is sent back at any time, this indicates
43 < that all communication is over. EXCEPT where specified!
42 > If [ERROR] is sent back at any time, this indicates that all
43 > communication is over. EXCEPT where otherwise specified!
44  
45 +
46   Host Connection Protocol
47   ------------------------
48   The initial connection of a host to the i-scream server is
49   through the FilterManager.  A Host gets its configuration
50 < and then gets assigned a filter to connect to and start
50 > and then gets assigned a Filter to connect to and start
51   sending data.
52  
53 < The port number of the filter manager is fully configurable,
53 > The port number of the FilterManager is fully configurable,
54   however the default at this time is 4567.
55  
56   Host         (direction) Server         Comment
# Line 56 | Line 58 | Host         (direction) Server         Comment
58   [STARTCONFIG]---------->                Requests to start
59                                          receiving config
60                                          information
61 <            
61 >            
62               <---------- [OK|ERROR]     If the server ok's
63                                          the request or not
64  
65   [LASTMODIFIED]---------->               Asks when the config
66                                          was last modified
67                                          (used when checking
68 <                                        if the config has
68 >                                        if the config has
69                                          changed)
70 <            
70 >            
71               <---------- [{lastmodified}Returns a long int
72 <                         |ERROR]        time since epoc
72 >                         |ERROR]        time since epoch
73                                          eg, 123456789
74 <
74 >                                        To indicate what
75 >                                        format this is in,
76 >                                        I quote from the
77 >                                        Java 1.3 JDK API
78 >                                        "measured in milli
79 >                                        -seconds since the
80 >                                        epoch"
81 >                                        
82   [FILELIST]   ---------->                Asks the server for
83                                          the list of files
84                                          that were used to
# Line 77 | Line 86 | Host         (direction) Server         Comment
86                                          (used when checking
87                                          if the config has
88                                          changed)
89 <        
89 >      
90               <---------- [{filelist}    Returns a semi-colon
91 <                         |ERROR]        seperated list of
91 >                         |ERROR]        separated list of
92                                          filenames
93                                          eg,
94                                          a.conf;b.conf;c.conf
# Line 93 | Line 102 | Host         (direction) Server         Comment
102                                          retrieved from the
103                                          config file
104                                          eg, UDPUpdateTime
105 <            
105 >            
106               <---------- [{value}|ERROR]Returns the value of
107                                          the requested config
108                                          property
109                                          eg, 120
110                                          If it is unable to
111 <                                        find the requested
111 >                                        find the requested
112                                          property it returns
113                                          ERROR to indicate
114 <                                        that fact
115 <                                        
114 >                                        that fact, but
115 >                                        communication still
116 >                                        proceeds
117 >                                      
118               ********** LOOP UNTIL **********
119               The loop continues until the host
120               sends the following message
121 <            
122 < [ENDCONFIG]  ---------->                Indicates that the
121 >            
122 > [ENDCONFIG]  ---------->                Indicates that the
123                                          host requires no
124                                          more config
125 <            
125 >            
126               ********** LOOP  END **********
127               Communication continues
128 <            
128 >            
129               <---------- [OK]           Indicates that the
130                                          server is ready to
131                                          proceed
132 <                                        
132 >                                      
133   [FILTER]     ---------->                Asks the server to
134                                          send it the host
135 <                                        information of a
135 >                                        information of a
136                                          filter that it
137                                          should connect to
138 <                                        
138 >                                      
139               <---------- {filter}       Returns a semi-colon
140 <                                        seperated list of
140 >                                        separated list of
141                                          FQDN hostname, UDP
142                                          port number and TCP
143 <                                        port number that a
143 >                                        port number that a
144                                          configured Filter is
145                                          running on and
146 <                                        assigned to the
146 >                                        assigned to the
147                                          calling host
148                                          eg,
149                                          raptor.ukc.ac.uk;
# Line 142 | Line 153 | Host         (direction) Server         Comment
153                                          server that the host
154                                          has finished an will
155                                          disconnect
156 <            
156 >            
157               <---------- [OK|ERROR]     Indicates that the
158                                          server is either ok
159                                          or that it thought
160                                          there was an error
161 <        
161 > ------------------------------------------------------------
162 >      
163   Host Heartbeat Protocol
164   -----------------------
165   When a host is configured after it has connected it should
166   obtain a property TCPUpdateTime.  This indicates how often
167 < a host should send a "Heart Beat" which is a pro-active
167 > a host should send a "Heart Beat", which is a pro-active
168   connection to the server by the host to indicate that it is
169   still alive.  This "Heart Beat" also allows a host to see
170 < its configuration has changed and act accordingly.  In a
170 > its configuration has changed and act accordingly.  In a
171   well written host this should just be a case of dropping out
172   of a loop and heading back to the start (connecting to the
173   filter manager).
# Line 165 | Line 177 | Host            (direction) Server      Comment
177   [HEARTBEAT]     ---------->             Starts the
178                                          heartbeat protocol
179                                          off
180 <                                        
180 >                                      
181                  <---------- [OK|ERROR]  Indicates that the
182                                          server is ok or not
183  
# Line 177 | Line 189 | Host            (direction) Server      Comment
189                                          server is ok or not
190  
191   [{filelist}]    ---------->             Send a semi-colon
192 <                                        seperated list of
192 >                                        separated list of
193                                          filenames
194                                          eg,
195                                          a.conf;b.conf;c.conf
196                                          This should be
197                                          identical to the one
198 <                                        recieved in the
198 >                                        received in the
199                                          connection protocol
200  
201                  <---------- [OK]        Indicates that the
202                                          server is ok
203  
204   [{lastmodified}]---------->             Returns a long int
205 <                                        time since epoc
205 >                                        time since epoch
206                                          eg, 123456789
207                                          This should be
208                                          identical to the one
209 <                                        recieved in the
209 >                                        received in the
210                                          connection protocol
211 +                                        To indicate what
212 +                                        format this is in,
213 +                                        I quote from the
214 +                                        Java 1.3 JDK API
215 +                                        "measured in milli
216 +                                        -seconds since the
217 +                                        epoch"
218  
219                  <---------- [OK|ERROR]  The server then
220                                          checks all the files
# Line 203 | Line 222 | Host            (direction) Server      Comment
222                                          see if they have
223                                          been modified more
224                                          recently than the
225 <                                        lastmodified value
226 <                                        if they HAVE that
225 >                                        lastmodified value.
226 >                                        If they HAVE that
227                                          indicates that the
228                                          configuration has
229                                          changed and the host
# Line 221 | Line 240 | Host            (direction) Server      Comment
240                                          server that the host
241                                          has finished an will
242                                          disconnect
243 <                
243 >              
244                  <---------- [OK|ERROR]  Indicates that the
245                                          server is either ok
246                                          or that it thought
247                                          there was an error
248 + ------------------------------------------------------------
249  
250   Host Data Protocol
251   ------------------
# Line 238 | Line 258 | http://www.i-scream.org.uk/cgi-bin/docs.cgi?doc=specif
258   Client Control Protocol
259   -----------------------
260  
261 < <TODO>
261 > The client control protocol channel is opened by the client
262 > and allows a variety of actions to be carried out by the
263 > client at anytime.  Unlike previous protocols, this is NOT
264 > sequential, all of the requests can be carried out in
265 > any order.
266  
267 + All client protocols are backwards compatible, and the
268 + version is shown by the protocol identifier.
269 +
270 + There are three sections to this protocol.
271 +
272 + 1) Initialise (sent only at start)
273 + 2) Send command(s) - unlimited number in any order
274 + 3) Disconnect (sent only at end)
275 +
276 + If at anytime the client sends something the server does
277 + not understand, an [ERROR] will be sent
278 +
279 + All are indicated with <> brackets.
280 +
281 + v1.0 - Protocol identifier: "PROTOCOL 1.0" (without quotes)
282 +       Supported commands:
283 +            STARTCONFIG
284 +            STARTDATA
285 +            STOPDATA
286 +
287 + Host         (direction) Server         Comment
288 + ------------------------------------------------------------
289 + <initialise>
290 + [CONNECT]    ---------->                Starts off the
291 +                                        client protocol
292 +            
293 +             <---------- [{protocol}]   The server sends the
294 +                                        protocol identifier
295 +                                        
296 + [{name}]     ---------->                The client sends its
297 +                                        "name".  This name
298 +                                        is used to identify
299 +                                        the type of client
300 +                                        to the system and
301 +                                        obtain its config
302 +                                        eg, Conient
303 +            
304 +             <---------- [OK]           Indicates the server
305 +                                        is ok to proceed
306 +                        
307 +
308 + <command #1> (allows client to obtain its configuration)
309 + [STARTCONFIG]---------->                Tell the server we
310 +                                        want to start this
311 +                                        command
312 +            
313 +             <---------- [OK]           Indicates the server
314 +                                        is ok to proceed
315 +            
316 +             ********** LOOP START **********
317 +             This loop reads configuration
318 +             properties from the config
319 +
320 + [{property}] ---------->                Sends the name of a
321 +                                        property to be
322 +                                        retrieved from the
323 +                                        config file
324 +                                        Clients can obtain
325 +                                        host information
326 +                                        eg,
327 +                                        Host.UDPUpdateTime
328 +                                        Otherwise it must
329 +                                        prefix requests
330 +                                        with "Client."
331 +                                        All other requests
332 +                                        will be ignored as
333 +                                        if it was unable to
334 +                                        retieve the property
335 +                                        
336 +             <---------- [{value}|ERROR]Returns the value of
337 +                                        the requested config
338 +                                        property
339 +                                        eg, 120
340 +                                        If it is unable to
341 +                                        find the requested
342 +                                        property it returns
343 +                                        ERROR to indicate
344 +                                        that fact
345 +                                        
346 +             ********** LOOP UNTIL **********
347 +             The loop continues until the client
348 +             sends the following message
349 +            
350 + [ENDCONFIG]  ---------->                Indicates that the
351 +                                        client requires no
352 +                                        more config
353 +            
354 +             ********** LOOP  END **********
355 +             Communication continues
356 +            
357 +             <---------- [OK]           Indicates that the
358 +                                        server is ready to
359 +                                        proceed
360 +
361 + <command #2> (tells the server to start the data link)
362 + [STARTDATA]  ---------->                Tell the server we
363 +                                        want to start this
364 +                                        command
365 +            
366 +             <---------- [{portnumber}  The server then sets
367 +                         |ERROR]        itself listening for
368 +                                        a connection on its
369 +                                        data link socket for
370 +                                        this client.  It
371 +                                        returns the port no.
372 +                                        that it is listening
373 +                                        on eg, 12367
374 +                                        If the data link is
375 +                                        yet to be started
376 +                                        the server will
377 +                                        return ERROR
378 +            
379 +             <---------- [OK]           Indicates the server
380 +                                        is ok to proceed and
381 +                                        the client can
382 +                                        then connect its
383 +                                        data link
384 +
385 + <command #3> (tells the server to stop the data link)
386 + [STOPDATA]   ---------->                Tell the server we
387 +                                        want to start this
388 +                                        command
389 +                                        The server then
390 +                                        shuts down the
391 +                                        data link to the
392 +                                        client
393 +
394 +             <---------- [OK|ERROR]     Returns OK is the
395 +                                        server is ready to
396 +                                        proceed, or ERROR
397 +                                        if the data link
398 +                                        was not open in the
399 +                                        first place
400 +
401 + <disconnect>
402 + [DISCONNECT] ---------->                Tells the server the
403 +                                        client wants to
404 +                                        close the control
405 +                                        link
406 +                                        
407 +             <---------- [OK]           The last word from
408 +                                        the server, it will
409 +                                        disappear after this
410 + ------------------------------------------------------------
411 +
412 + v1.1 - Protocol identifier: "PROTOCOL 1.1" (without quotes)
413 +       Supported commands:
414 +            SETHOSTLIST
415 +
416 + Host         (direction) Server         Comment
417 + ------------------------------------------------------------
418 + <command #4> (indicates to the server which hosts the client
419 +              wants data from)
420 + [SETHOSTLIST]---------->                Tell the server we
421 +                                        want to start this
422 +                                        command
423 +            
424 +             <---------- [OK|ERROR]     The server will
425 +                                        return an ERROR if
426 +                                        the data link is
427 +                                        open, as a host list
428 +                                        must ONLY be set
429 +                                        if the data link is
430 +                                        closed
431 +                                        If the server is
432 +                                        ok to proceed with
433 +                                        the command it says
434 +                                        [OK]
435 +
436 + [{hostlist}] ---------->                This is a semi-colon
437 +                                        seperated list of
438 +                                        FQDN hostnames that
439 +                                        the client wishes to
440 +                                        recieve data from
441 +                                        eg,
442 +        raptor.ukc.ac.uk;killigrew.ukc.ac.uk;chalk.ukc.ac.uk
443 +                                        
444 +                                        If the list is sent
445 +                                        blank (or if no list
446 +                                        is set at all) then
447 +                                        data from ALL hosts
448 +                                        will be sent to the
449 +                                        client
450 +                                        
451 +             <---------- [OK]           Indicates the server
452 +                                        is ok to proceed and
453 +                                        the host list has
454 +                                        been accepted
455 + ------------------------------------------------------------
456 +
457   Client Data Protocol
458   --------------------
459 + Once the data link has been opened by the control link, the
460 + server will send XML formated data packets seperated by the
461 + \n (newline) character.  For information on the format of
462 + this data see the XML via UDP specification document at:
463  
464 < <TODO>
464 > http://www.i-scream.org.uk/cgi-bin/docs.cgi?doc=specification/xml_via_udp.txt
465  
466   About
467   -----

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines