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.10 by ajm, Mon Mar 19 15:05:53 2001 UTC

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

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines