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.3 by ajm, Sun Jan 28 20:05:35 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  
75   [FILELIST]   ---------->                Asks the server for
# Line 77 | Line 79 | Host         (direction) Server         Comment
79                                          (used when checking
80                                          if the config has
81                                          changed)
82 <        
82 >      
83               <---------- [{filelist}    Returns a semi-colon
84 <                         |ERROR]        seperated list of
84 >                         |ERROR]        separated list of
85                                          filenames
86                                          eg,
87                                          a.conf;b.conf;c.conf
# Line 93 | Line 95 | Host         (direction) Server         Comment
95                                          retrieved from the
96                                          config file
97                                          eg, UDPUpdateTime
98 <            
98 >            
99               <---------- [{value}|ERROR]Returns the value of
100                                          the requested config
101                                          property
102                                          eg, 120
103                                          If it is unable to
104 <                                        find the requested
104 >                                        find the requested
105                                          property it returns
106                                          ERROR to indicate
107 <                                        that fact
108 <                                        
107 >                                        that fact, but
108 >                                        communication still
109 >                                        proceeds
110 >                                      
111               ********** LOOP UNTIL **********
112               The loop continues until the host
113               sends the following message
114 <            
115 < [ENDCONFIG]  ---------->                Indicates that the
114 >            
115 > [ENDCONFIG]  ---------->                Indicates that the
116                                          host requires no
117                                          more config
118 <            
118 >            
119               ********** LOOP  END **********
120               Communication continues
121 <            
121 >            
122               <---------- [OK]           Indicates that the
123                                          server is ready to
124                                          proceed
125 <                                        
125 >                                      
126   [FILTER]     ---------->                Asks the server to
127                                          send it the host
128 <                                        information of a
128 >                                        information of a
129                                          filter that it
130                                          should connect to
131 <                                        
131 >                                      
132               <---------- {filter}       Returns a semi-colon
133 <                                        seperated list of
133 >                                        separated list of
134                                          FQDN hostname, UDP
135                                          port number and TCP
136 <                                        port number that a
136 >                                        port number that a
137                                          configured Filter is
138                                          running on and
139 <                                        assigned to the
139 >                                        assigned to the
140                                          calling host
141                                          eg,
142                                          raptor.ukc.ac.uk;
# Line 142 | Line 146 | Host         (direction) Server         Comment
146                                          server that the host
147                                          has finished an will
148                                          disconnect
149 <            
149 >            
150               <---------- [OK|ERROR]     Indicates that the
151                                          server is either ok
152                                          or that it thought
153                                          there was an error
154 <        
154 > <<<<<<< protocols.txt
155 > ------------------------------------------------------------
156 >
157 > =======
158 >      
159 > >>>>>>> 1.2
160   Host Heartbeat Protocol
161   -----------------------
162   When a host is configured after it has connected it should
163   obtain a property TCPUpdateTime.  This indicates how often
164 < a host should send a "Heart Beat" which is a pro-active
164 > a host should send a "Heart Beat", which is a pro-active
165   connection to the server by the host to indicate that it is
166   still alive.  This "Heart Beat" also allows a host to see
167 < its configuration has changed and act accordingly.  In a
167 > its configuration has changed and act accordingly.  In a
168   well written host this should just be a case of dropping out
169   of a loop and heading back to the start (connecting to the
170   filter manager).
# Line 165 | Line 174 | Host            (direction) Server      Comment
174   [HEARTBEAT]     ---------->             Starts the
175                                          heartbeat protocol
176                                          off
177 <                                        
177 >                                      
178                  <---------- [OK|ERROR]  Indicates that the
179                                          server is ok or not
180  
# Line 177 | Line 186 | Host            (direction) Server      Comment
186                                          server is ok or not
187  
188   [{filelist}]    ---------->             Send a semi-colon
189 <                                        seperated list of
189 >                                        separated list of
190                                          filenames
191                                          eg,
192                                          a.conf;b.conf;c.conf
193                                          This should be
194                                          identical to the one
195 <                                        recieved in the
195 >                                        received in the
196                                          connection protocol
197  
198                  <---------- [OK]        Indicates that the
199                                          server is ok
200  
201   [{lastmodified}]---------->             Returns a long int
202 <                                        time since epoc
202 >                                        time since epoch
203                                          eg, 123456789
204                                          This should be
205                                          identical to the one
206 <                                        recieved in the
206 >                                        received in the
207                                          connection protocol
208  
209                  <---------- [OK|ERROR]  The server then
# Line 203 | Line 212 | Host            (direction) Server      Comment
212                                          see if they have
213                                          been modified more
214                                          recently than the
215 <                                        lastmodified value
216 <                                        if they HAVE that
215 >                                        lastmodified value.
216 >                                        If they HAVE that
217                                          indicates that the
218                                          configuration has
219                                          changed and the host
# Line 221 | Line 230 | Host            (direction) Server      Comment
230                                          server that the host
231                                          has finished an will
232                                          disconnect
233 <                
233 >              
234                  <---------- [OK|ERROR]  Indicates that the
235                                          server is either ok
236                                          or that it thought
237                                          there was an error
238 + ------------------------------------------------------------
239  
240   Host Data Protocol
241   ------------------
# Line 233 | Line 243 | The UDP data packets that are sent by the host contain
243   simply XML data.  For information on the format of this
244   data see the XML via UDP specification document at:
245  
246 < http://www.i-scream.org.uk/cgi-bin/docs.cgi?doc=specification/xml_via_udp.txt
246 > http://www.i-scream.org.uk/cgi-bin/docs.cgi?doc=specificatio
247 > n/xml_via_udp.txt
248  
249   Client Control Protocol
250   -----------------------
251  
252 < <TODO>
252 > The client control protocol channel is opened by the client
253 > and allows a variety of actions to be carried out by the
254 > client at anytime.  Unlike previous protocols, this is NOT
255 > sequential, all of the requests can be carried out in
256 > any order.
257  
258 + All client protocols are backwards compatible, and the
259 + version is shown by the protocol identifier.
260 +
261 + There are three sections to this protocol.
262 +
263 + 1) Initialise (sent only at start)
264 + 2) Send command(s) - unlimited number in any order
265 + 3) Disconnect (sent only at end)
266 +
267 + If at anytime the client sends something the server does
268 + not understand, an [ERROR] will be sent
269 +
270 + All are indicated with <> brackets.
271 +
272 + v1.0 - Protocol identifier: "PROTOCOL 1.0" (without quotes)
273 +       Supported commands:
274 +            STARTCONFIG
275 +            STARTDATA
276 +            STOPDATA
277 +
278 + Host         (direction) Server         Comment
279 + ------------------------------------------------------------
280 + <initialise>
281 + [CONNECT]    ---------->                Starts off the
282 +                                        client protocol
283 +            
284 +             <---------- [{protocol}]   The server sends the
285 +                                        protocol identifier
286 +                                        
287 + [{name}]     ---------->                The client sends its
288 +                                        "name".  This name
289 +                                        is used to identify
290 +                                        the type of client
291 +                                        to the system and
292 +                                        obtain its config
293 +                                        eg, Conient
294 +            
295 +             <---------- [OK]           Indicates the server
296 +                                        is ok to proceed
297 +                        
298 +
299 + <command #1> (allows client to obtain its configuration)
300 + [STARTCONFIG]---------->                Tell the server we
301 +                                        want to start this
302 +                                        command
303 +            
304 +             <---------- [OK]           Indicates the server
305 +                                        is ok to proceed
306 +            
307 +             ********** LOOP START **********
308 +             This loop reads configuration
309 +             properties from the config
310 +
311 + [{property}] ---------->                Sends the name of a
312 +                                        property to be
313 +                                        retrieved from the
314 +                                        config file
315 +                                        Clients can obtain
316 +                                        host information
317 +                                        eg,
318 +                                        Host.UDPUpdateTime
319 +                                        Otherwise it must
320 +                                        prefix requests
321 +                                        with "Client."
322 +                                        All other requests
323 +                                        will be ignored as
324 +                                        if it was unable to
325 +                                        retieve the property
326 +                                        
327 +             <---------- [{value}|ERROR]Returns the value of
328 +                                        the requested config
329 +                                        property
330 +                                        eg, 120
331 +                                        If it is unable to
332 +                                        find the requested
333 +                                        property it returns
334 +                                        ERROR to indicate
335 +                                        that fact
336 +                                        
337 +             ********** LOOP UNTIL **********
338 +             The loop continues until the client
339 +             sends the following message
340 +            
341 + [ENDCONFIG]  ---------->                Indicates that the
342 +                                        client requires no
343 +                                        more config
344 +            
345 +             ********** LOOP  END **********
346 +             Communication continues
347 +            
348 +             <---------- [OK]           Indicates that the
349 +                                        server is ready to
350 +                                        proceed
351 +
352 + <command #2> (tells the server to start the data link)
353 + [STARTDATA]  ---------->                Tell the server we
354 +                                        want to start this
355 +                                        command
356 +            
357 +             <---------- [{portnumber}  The server then sets
358 +                         |ERROR]        itself listening for
359 +                                        a connection on its
360 +                                        data link socket for
361 +                                        this client.  It
362 +                                        returns the port no.
363 +                                        that it is listening
364 +                                        on eg, 12367
365 +                                        If the data link is
366 +                                        yet to be started
367 +                                        the server will
368 +                                        return ERROR
369 +            
370 +             <---------- [OK]           Indicates the server
371 +                                        is ok to proceed and
372 +                                        the client can
373 +                                        then connect its
374 +                                        data link
375 +
376 + <command #3> (tells the server to stop the data link)
377 + [STOPDATA]   ---------->                Tell the server we
378 +                                        want to start this
379 +                                        command
380 +                                        The server then
381 +                                        shuts down the
382 +                                        data link to the
383 +                                        client
384 +
385 +             <---------- [OK|ERROR]     Returns OK is the
386 +                                        server is ready to
387 +                                        proceed, or ERROR
388 +                                        if the data link
389 +                                        was not open in the
390 +                                        first place
391 +
392 + <disconnect>
393 + [DISCONNECT] ---------->                Tells the server the
394 +                                        client wants to
395 +                                        close the control
396 +                                        link
397 +                                        
398 +             <---------- [OK]           The last word from
399 +                                        the server, it will
400 +                                        disappear after this
401 + ------------------------------------------------------------
402 +
403 + v1.1 - Protocol identifier: "PROTOCOL 1.1" (without quotes)
404 +       Supported commands:
405 +            SETHOSTLIST
406 +
407 + Host         (direction) Server         Comment
408 + ------------------------------------------------------------
409 + <command #4> (indicates to the server which hosts the client
410 +              wants data from)
411 + [SETHOSTLIST]---------->                Tell the server we
412 +                                        want to start this
413 +                                        command
414 +            
415 +             <---------- [OK|ERROR]     The server will
416 +                                        return an ERROR if
417 +                                        the data link is
418 +                                        open, as a host list
419 +                                        must ONLY be set
420 +                                        if the data link is
421 +                                        closed
422 +                                        If the server is
423 +                                        ok to proceed with
424 +                                        the command it says
425 +                                        [OK]
426 +
427 + [{hostlist}] ---------->                This is a semi-colon
428 +                                        seperated list of
429 +                                        FQDN hostnames that
430 +                                        the client wishes to
431 +                                        recieve data from
432 +                                        eg,
433 +        raptor.ukc.ac.uk;killigrew.ukc.ac.uk;chalk.ukc.ac.uk
434 +                                        
435 +                                        If the list is sent
436 +                                        blank (or if no list
437 +                                        is set at all) then
438 +                                        data from ALL hosts
439 +                                        will be sent to the
440 +                                        client
441 +                                        
442 +             <---------- [OK]           Indicates the server
443 +                                        is ok to proceed and
444 +                                        the host list has
445 +                                        been accepted
446 + ------------------------------------------------------------
447 +
448   Client Data Protocol
449   --------------------
450 + Once the data link has been opened by the control link, the
451 + server will send XML formated data packets seperated by the
452 + \n (newline) character.  For information on the format of
453 + this data see the XML via UDP specification document at:
454  
455 < <TODO>
455 > http://www.i-scream.org.uk/cgi-bin/docs.cgi?doc=specificatio
456 > n/xml_via_udp.txt
457  
458   About
459   -----

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines