qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Anthony Liguori <aliguori@us.ibm.com>
To: Avi Kivity <avi@redhat.com>
Cc: ehabkost@redhat.com, jan.kiszka@siemens.com, dlaor@redhat.com,
	qemu-devel@nongnu.org, Luiz Capitulino <lcapitulino@redhat.com>,
	Vincent Hanquez <tab@snarc.org>
Subject: Re: [Qemu-devel] [PATCH 01/11] QMP: Introduce specification file
Date: Tue, 23 Jun 2009 14:00:41 -0500	[thread overview]
Message-ID: <4A412659.1080803@us.ibm.com> (raw)
In-Reply-To: <4A412339.5000109@redhat.com>

Avi Kivity wrote:
> It looks brittle to me.  What if you want to add an array?  Some 
> structure that contains a nested structure?

Can you give me concrete examples?

The typical way this would be handled in an RPC library in C is to 
introduce complex types.  For instance, you could have a MonitorList and 
a corresponding MON_LIST type.  FWIW, is there a jsonrpc library for C 
that's actually maintained?

I can't find one that even has a functioning website.

>> If we implement this correctly, then an RPC interface could just be 
>> another option to see the computer monitor mode implemented as a 
>> "module".
>
> This is deep into overkill territory IMO.  We should pick some format 
> that is good enough and has implementations for a variety of 
> languages.  Luiz' RFC was well done, but the subject is complex enough 
> to be difficult to get right.  And as far as I could tell, all the 
> issues are addressed by jsonrpc.  The only downside I can see is that 
> jsonrpc is some kind of ajax-kiddie web-2.0 script dom thingie while 
> we are a serious UNIX style daemon that complies with RFC 123456.

There are many reasons why JSON is a bad representation.  For starters, 
there is no way to encode NULL values in a JSON string.  This means you 
cannot send binary data unless you base64 encode it first.  The bounds 
of integers are also not well defined but most implementations restrict 
integers to int32.  You basically cannot send 64-bit integers without 
encoding them first.  It gets really hairy.

For jsonrpc, there's no standard way to enumerate methods like there is 
in xml-rpc and jsonrpc isn't self-describing.  Having an RPC be 
self-describing is really useful when dealing with a dynamic language 
because you can then avoid IDL compilation.

So as far as RPCs go, jsonrpc is actually a pretty bad one.  The odd 
thing about it is you still have to parse json in JavaScript to avoid 
security problems.  Parsing json in js seems to eliminate 99% of the 
useness of it.

-- 
Regards,

Anthony Liguori

  reply	other threads:[~2009-06-23 19:00 UTC|newest]

Thread overview: 199+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <cover.1245730845.git.lcapitulino@redhat.com>
2009-06-23  4:28 ` [Qemu-devel] [PATCH 01/11] QMP: Introduce specification file Luiz Capitulino
2009-06-23  8:55   ` [Qemu-devel] " Avi Kivity
2009-06-23  9:57     ` Daniel P. Berrange
2009-06-23 10:08       ` Avi Kivity
2009-06-23 13:22       ` Luiz Capitulino
2009-06-23 13:31         ` Avi Kivity
2009-06-23 13:06     ` Luiz Capitulino
2009-06-23 13:10       ` Daniel P. Berrange
2009-06-23 17:12         ` Luiz Capitulino
2009-06-23 13:27       ` Avi Kivity
2009-06-23 17:15         ` Luiz Capitulino
2009-06-23 13:12     ` Anthony Liguori
2009-06-23 13:30       ` Avi Kivity
2009-06-23 13:34         ` Eduardo Habkost
2009-06-23 13:40         ` Anthony Liguori
2009-06-23 15:01           ` Avi Kivity
2009-06-23 15:47             ` Anthony Liguori
2009-06-23 16:02               ` Avi Kivity
2009-06-23 17:20       ` Luiz Capitulino
2009-06-23 14:45   ` [Qemu-devel] " Vincent Hanquez
2009-06-23 15:56     ` Avi Kivity
2009-06-23 15:56       ` Anthony Liguori
2009-06-23 16:04         ` Avi Kivity
2009-06-23 16:09           ` Anthony Liguori
2009-06-23 16:15             ` Avi Kivity
2009-06-23 18:32               ` Anthony Liguori
2009-06-23 18:47                 ` Avi Kivity
2009-06-23 19:00                   ` Anthony Liguori [this message]
2009-06-23 19:44                     ` Avi Kivity
2009-06-23 19:52                     ` Avi Kivity
2009-06-23 20:07                       ` Anthony Liguori
2009-06-23 20:13                         ` Avi Kivity
2009-06-23 22:02                           ` Anthony Liguori
2009-06-23 22:02                     ` Vincent Hanquez
2009-06-23 22:50                       ` Anthony Liguori
2009-06-24  1:01                         ` Vincent Hanquez
2009-06-24 11:55                           ` James
2009-06-24 12:09                             ` Daniel P. Berrange
2009-06-24 12:32                               ` James
2009-06-24 12:54                                 ` Daniel P. Berrange
2009-06-24 14:31                                   ` Stefano Stabellini
2009-06-24 12:46                           ` Anthony Liguori
2009-06-24 13:02                             ` Daniel P. Berrange
2009-06-24 13:21                               ` Avi Kivity
2009-06-24 13:09                             ` Avi Kivity
2009-06-24 16:22                               ` Jamie Lokier
2009-06-24 16:25                                 ` Avi Kivity
2009-06-24 18:52                                   ` Jamie Lokier
2009-06-24 17:39                                 ` Vincent Hanquez
2009-06-24 18:23                                   ` Filip Navara
2009-06-24 18:41                                     ` Jamie Lokier
2009-06-24 18:42                                     ` Vincent Hanquez
2009-06-24 18:55                                       ` Filip Navara
2009-06-24 18:56                                       ` Jamie Lokier
2009-06-24 13:34                             ` Ian Jackson
2009-06-24 16:09                               ` Jamie Lokier
2009-06-24 14:03                             ` Filip Navara
2009-06-25 19:30                               ` Luiz Capitulino
2009-06-24 14:06                             ` Vincent Hanquez
2009-06-24 14:41                             ` Stefano Stabellini
2009-06-24 14:56                             ` Chris Webb
2009-06-24 19:01                               ` Jamie Lokier
2009-06-24 15:57                             ` Filip Navara
2009-06-24 16:22                               ` Avi Kivity
2009-06-24 16:42                                 ` Filip Navara
2009-06-24 19:05                                 ` Jamie Lokier
2009-06-24 19:24                                   ` Filip Navara
2009-06-24 21:13                                     ` Jamie Lokier
2009-06-24 21:29                                       ` Filip Navara
2009-06-24 21:47                                         ` Jamie Lokier
2009-06-25 13:07                                       ` Stefano Stabellini
2009-06-25 14:55                                         ` Avi Kivity
2009-06-25 15:10                                           ` Anthony Liguori
2009-06-25 15:20                                             ` Avi Kivity
2009-06-25 17:04                                               ` Stefano Stabellini
2009-06-25 18:10                                                 ` Anthony Liguori
2009-06-25 19:03                                                   ` Daniel P. Berrange
2009-06-26  9:00                                                     ` Avi Kivity
2009-06-26  9:10                                                       ` Daniel P. Berrange
2009-06-26  9:16                                                         ` Avi Kivity
2009-06-26  9:44                                                           ` Daniel P. Berrange
2009-06-26 11:41                                                             ` Vincent Hanquez
2009-06-25 18:09                                               ` Anthony Liguori
2009-06-25 18:31                                                 ` Avi Kivity
2009-06-25 19:54                                                   ` Anthony Liguori
2009-06-26  9:12                                                     ` Avi Kivity
2009-06-26 13:21                                                       ` Anthony Liguori
2009-06-26 15:02                                                         ` Anthony Liguori
2009-06-26 17:36                                                           ` Filip Navara
2009-06-26 19:36                                                             ` Anthony Liguori
2009-06-26 20:25                                                               ` Filip Navara
2009-06-28 13:16                                                                 ` Avi Kivity
2009-06-28 17:30                                                                   ` Anthony Liguori
2009-06-28 17:36                                                                     ` Avi Kivity
2009-06-29  9:44                                                                     ` Stefano Stabellini
2009-06-29  9:50                                                                       ` Avi Kivity
2009-06-29 10:09                                                                         ` Stefano Stabellini
2009-06-27  7:03                                                               ` Filip Navara
2009-06-28 12:11                                                           ` Avi Kivity
2009-06-28 13:13                                                           ` Avi Kivity
2009-06-28 17:23                                                             ` Anthony Liguori
2009-06-28 17:34                                                               ` Avi Kivity
2009-06-29  0:42                                                                 ` Anthony Liguori
2009-06-29  6:04                                                                   ` Avi Kivity
2009-06-29  9:48                                                                     ` Stefano Stabellini
2009-06-29 20:23                                                                     ` Anthony Liguori
2009-06-30  5:37                                                                       ` Avi Kivity
2009-06-30 13:30                                                                         ` Anthony Liguori
2009-06-30 13:51                                                                           ` Stefano Stabellini
2009-06-30 13:52                                                                           ` Avi Kivity
2009-06-30 13:56                                                                             ` Anthony Liguori
2009-06-30 14:03                                                                               ` Luiz Capitulino
2009-06-30 16:05                                                                                 ` Avi Kivity
2009-06-30 18:21                                                                                   ` Anthony Liguori
2009-07-01  8:07                                                                                     ` Avi Kivity
2009-06-29 14:41                                                                   ` Stefano Stabellini
2009-06-29 14:56                                                                     ` Avi Kivity
2009-06-28 17:38                                                               ` Filip Navara
2009-06-26 11:36                                                     ` Vincent Hanquez
2009-06-24 16:00                     ` Jamie Lokier
2009-06-23 16:20             ` Avi Kivity
2009-06-23 17:59             ` Vincent Hanquez
2009-06-23 15:41   ` Blue Swirl
2009-06-23  4:28 ` [Qemu-devel] [PATCH 02/11] QMP: Introduce MONITOR_USE_CONTROL flag Luiz Capitulino
2009-06-23  4:28 ` [Qemu-devel] [PATCH 03/11] QMP: Introduce protocol print functions Luiz Capitulino
2009-06-23 13:45   ` Anthony Liguori
2009-06-23 13:53     ` Eduardo Habkost
2009-06-23  4:28 ` [Qemu-devel] [PATCH 04/11] QMP: Make monitor_handle_command() QMP aware Luiz Capitulino
2009-06-23 13:51   ` Anthony Liguori
2009-06-23 17:25     ` Luiz Capitulino
2009-06-23  4:29 ` [Qemu-devel] [PATCH 05/11] QMP: Introduce control mode chardev handling Luiz Capitulino
2009-06-23  4:29 ` [Qemu-devel] [PATCH 06/11] QMP: Introduce asynchronous events infrastructure Luiz Capitulino
2009-06-23  8:59   ` [Qemu-devel] " Jan Kiszka
2009-06-23 13:31     ` Luiz Capitulino
2009-06-23 10:08   ` Daniel P. Berrange
2009-06-23 10:11     ` Avi Kivity
2009-06-23 14:46     ` Paul Brook
2009-06-23 10:32   ` Daniel P. Berrange
2009-06-23 11:23     ` Avi Kivity
2009-06-23 13:36     ` Luiz Capitulino
2009-06-23 13:48       ` Eduardo Habkost
2009-06-23 13:51         ` Jan Kiszka
2009-06-23 16:34           ` Avi Kivity
2009-06-23 16:47           ` Daniel P. Berrange
2009-06-23  4:29 ` [Qemu-devel] [PATCH 07/11] QMP: Enable simple commands Luiz Capitulino
2009-06-23  4:29 ` [Qemu-devel] [PATCH 08/11] QMP: Port balloon command Luiz Capitulino
2009-06-23  9:42   ` [Qemu-devel] " Avi Kivity
2009-06-23 13:59     ` Anthony Liguori
2009-06-23 16:36       ` Avi Kivity
2009-06-23 16:58         ` Anthony Liguori
2009-06-23 16:59       ` Luiz Capitulino
2009-06-23 18:38         ` Anthony Liguori
2009-06-25 11:27           ` Dor Laor
2009-06-25 19:11             ` Luiz Capitulino
2009-06-26  9:21               ` Avi Kivity
2009-06-26  9:42                 ` Daniel P. Berrange
2009-06-26 11:15                   ` Avi Kivity
2009-06-27 15:58                   ` Luiz Capitulino
2009-06-28 15:52                     ` Avi Kivity
2009-06-28 16:30                       ` Blue Swirl
2009-06-28 17:23                       ` Filip Navara
2009-06-28 17:43                         ` Avi Kivity
2009-06-28 17:51                         ` Blue Swirl
2009-06-28 18:36                           ` Avi Kivity
2009-06-28 22:11                           ` Jamie Lokier
2009-06-25 19:59             ` Anthony Liguori
2009-06-23  4:29 ` [Qemu-devel] [PATCH 09/11] QMP: Port 'info blockstats' command Luiz Capitulino
2009-06-23  9:43   ` [Qemu-devel] " Avi Kivity
2009-06-23  9:59     ` Jan Kiszka
2009-06-23 10:09       ` Avi Kivity
2009-06-23 10:10         ` Jan Kiszka
2009-06-23 14:01   ` [Qemu-devel] " Anthony Liguori
2009-06-23  4:29 ` [Qemu-devel] [PATCH 10/11] QMP: Introduce basic events Luiz Capitulino
2009-06-23  9:46   ` [Qemu-devel] " Avi Kivity
2009-06-23 17:07     ` Luiz Capitulino
2009-06-23 10:06   ` Daniel P. Berrange
2009-06-23  4:30 ` [Qemu-devel] [PATCH 11/11] QMP: Command-line flag to enable control mode Luiz Capitulino
2009-06-23  9:03   ` [Qemu-devel] " Jan Kiszka
2009-06-23 10:04     ` Daniel P. Berrange
2009-06-23 10:11       ` Jan Kiszka
2009-06-23 10:17         ` Avi Kivity
2009-06-23 10:54           ` Jan Kiszka
2009-06-23 11:28             ` Avi Kivity
2009-06-23 11:44               ` Jan Kiszka
2009-06-23 11:51                 ` Avi Kivity
2009-06-23 11:53                   ` Jan Kiszka
2009-06-23 12:01                     ` Avi Kivity
2009-06-23 12:39                       ` Jan Kiszka
2009-06-23 12:46                         ` Avi Kivity
2009-06-23 12:48                         ` Avi Kivity
2009-06-23 11:54                   ` Daniel P. Berrange
2009-06-23 11:48               ` Daniel P. Berrange
2009-06-23 12:25                 ` Avi Kivity
2009-06-23 14:06           ` Anthony Liguori
2009-06-23 10:19         ` Daniel P. Berrange
2009-06-23 11:13           ` Jan Kiszka
2009-06-23 13:59     ` Luiz Capitulino
2009-06-23 14:06       ` Jan Kiszka
2009-06-23 17:27         ` Luiz Capitulino

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4A412659.1080803@us.ibm.com \
    --to=aliguori@us.ibm.com \
    --cc=avi@redhat.com \
    --cc=dlaor@redhat.com \
    --cc=ehabkost@redhat.com \
    --cc=jan.kiszka@siemens.com \
    --cc=lcapitulino@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=tab@snarc.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).