[Spice-devel] [PATCH spice-streaming-agent v3 4/4] Stub to handle errors from server

Frediano Ziglio fziglio at redhat.com
Wed Feb 21 10:51:52 UTC 2018


> 
> On Tue, 2018-02-20 at 20:48 +0000, Frediano Ziglio wrote:
> > Base error message handling.
> > 
> > Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
> > ---
> >  src/spice-streaming-agent.cpp | 9 +++++++++
> >  1 file changed, 9 insertions(+)
> > 
> > diff --git a/src/spice-streaming-agent.cpp b/src/spice-streaming-agent.cpp
> > index 31c655c..343b252 100644
> > --- a/src/spice-streaming-agent.cpp
> > +++ b/src/spice-streaming-agent.cpp
> > @@ -81,6 +81,7 @@ static int have_something_to_read(int timeout)
> >  
> >  static void handle_stream_capabilities(uint32_t len);
> >  static void handle_stream_start_stop(uint32_t len);
> > +static void handle_stream_error(uint32_t len);
> >  
> >  static void read_command_from_device(void)
> >  {
> > @@ -101,6 +102,8 @@ static void read_command_from_device(void)
> >      switch (hdr.type) {
> >      case STREAM_TYPE_CAPABILITIES:
> >          return handle_stream_capabilities(hdr.size);
> > +    case STREAM_TYPE_NOTIFY_ERROR:
> > +        return handle_stream_error(hdr.size);
> >      case STREAM_TYPE_START_STOP:
> >          return handle_stream_start_stop(hdr.size);
> >      }
> > @@ -154,6 +157,12 @@ static void handle_stream_capabilities(uint32_t len)
> >      }
> >  }
> >  
> > +static void handle_stream_error(uint32_t len)
> > +{
> > +    // TODO read message and use it
> > +    throw std::runtime_error("got an error message from server");
> > +}
> > +
> >  static int read_command(bool blocking)
> >  {
> >      int timeout = blocking?-1:0;
> 
> You didn't have to make it that explicit for me :) But thanks... I
> don't find this commit necessary, it doesn't change the behavior and
> kind of just adds noise to the history...?
> 

I supposed can be a

// TODO: case STREAM_TYPE_NOTIFY_ERROR

(however you get a not much accurate message) or a

   case STREAM_TYPE_NOTIFY_ERROR:
      // TODO read message and use it
      throw std::runtime_error("got an error message from server");

but not much expensive to have a stub either.

I checked all required messages are handled and I put in the switch,
I think is a good way to avoid forgetting to implement some.

Frediano


More information about the Spice-devel mailing list