[Spice-devel] [RFC PATCH 2/2] Start writing some documentation on protocol

Jonathon Jongsma jjongsma at redhat.com
Thu Sep 15 19:35:45 UTC 2016


On Thu, 2016-09-15 at 07:08 -0400, Frediano Ziglio wrote:
> > 
> > 
> > On Fri, 2016-09-09 at 10:44 +0100, Frediano Ziglio wrote:
> > > 
> > > Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
> > > ---
> > >  docs/spice_protocol.txt | 48
> > > ++++++++++++++++++++++++++++++++++++++++++++++++
> > >  1 file changed, 48 insertions(+)
> > > 
> > > diff --git a/docs/spice_protocol.txt b/docs/spice_protocol.txt
> > > index b62da25..b0ba568 100644
> > > --- a/docs/spice_protocol.txt
> > > +++ b/docs/spice_protocol.txt
> > > @@ -1,2 +1,50 @@
> > >  Spice protocol format file
> > >  ==========================
> > > +
> > > +Copyright (C) 2016 Red Hat, Inc.
> > > +Licensed under a Creative Commons Attribution-Share Alike 3.0
> > > +United States License (see http://creativecommons.org/licenses/b
> > > y-sa
> > > /3.0/us/legalcode).
> > > +
> > > +Basic
> > > +-----
> > > +The spice protocol format file defines the network protocol used
> > > by
> > > spice.
> > > +It resemble the C format.
> > > +
> > > +    file ::= <definitions> <protocol>
> > > +    definitions ::= <definition>|<definitions><definition>
> > > +    definition ::=
> > > <typedef>|<structure>|<enum>|<flags>|<message>|<channel>
> > > +    protocol ::= "protocol" <identifier> "{" <protocol_channels>
> > > "}"
> > > ";"
> > > +    protocol_channels ::=
> > > <protocol_channel>|<protocol_channels><protocol_channel>
> > > +    protocol_channel ::= <identifier> <identifier> [ "="
> > > <integer> ]
> > > ";"
> > > +    integer ::= <hex>|<dec>
> > > +    dec ::= [+-][0-9]+
> > > +    hex ::= "0x" [0-9a-f]+
> > > +    identifier ::= [a-z][a-z0-9_]*
> > > +
> > > +(here BNF with some regular expression are used).
> > > +
> > > +Example:
> > > +
> > > +    channel ExampleChannel {
> > > +       message {
> > > +          uint32 dummy;
> > > +       } Dummy;
> > > +    };
> > > +
> > > +    protocol Example {
> > > +        ExampleChannel first = 1001;
> > > +    };
> > > +
> > > +As you can see brackets like C are used and structures looks
> > > like C
> > > but you
> > > +can also see that keyworks like `channel`, `protocol`, `message`
> > > or
> > > some
> > > +predefined types like `uint32` are proper of the protocol.
> > > +
> > > +Comments
> > > +--------
> > > +Both C and C++ style comments are supported
> > > +
> > > +    // this is a comment
> > > +    /* this is a comment too
> > > +       but can be split in multiple lines */
> > > +
> > > +
> > 
> > 
> > I think that documenting the protocol is badly needed, but I fear
> > that
> > unless this documentation is connected to the protocol definition
> > in
> > some way, it will get out-of-sync pretty quickly.
> > 
> > Jonathon
> > 
> 
> out-of-sync can be a problem but it's also true that the sync
> cannot move far away as this would break compatibility.
> Also we could extend the tests Christophe did to make sure that
> syntax is still working the same way.
> I was thinking about some small tools to extract documentation from
> spice_parser.py and other files but didn't manage to think any good
> way in a timely fashion. I wouldn't create another "project"
> (spend too much time) writing a tool that generate the documentation
> from source, looks like the information we need are quite spread all
> over the sources. I also tried to look at pyparsing (not really
> familiar with) to get a list the overall syntax documentation but
> didn't find nothing either.
> 
> Do you think I (I would prefer a WE) should investigate more on
> getting documentation from source? I think not, unless someone with
> better knowledge came with an easy solution.

No, at the moment I think it's probably not worth spending time on a
new tool to extract documentation. 

> 
> Do you think it's worth if I continue this branch/patches or should
> I discard them?

I don't think they need to be discarded.

Jonathon


More information about the Spice-devel mailing list