]> xenbits.xensource.com Git - libvirt.git/commitdiff
Change code generator to give async event messages their own postfix
authorDaniel P. Berrange <berrange@redhat.com>
Fri, 10 Jul 2009 11:38:41 +0000 (12:38 +0100)
committerDaniel P. Berrange <berrange@redhat.com>
Thu, 16 Jul 2009 15:09:47 +0000 (16:09 +0100)
The naming convention for structs used in the RPC layer is for
incoming requests to be called XXXX_args, and the associated
outgoing reply to be called XXXX_ret.  Asynchronously emitted
messages (eg events) are re-using the XXXX_ret naming scheme.
This patch changes that such that async messages are XXXX_msg,
and stops adding entries for them in the dispatch table, avoiding
the need for a dummy no-op implementation.

* qemud/remote.c: Remove dummy remoteDispatchDomainEvent, no
  longer required. Update to replace remote_domain_event_ret
  with xdr_remote_domain_event_msg
* qemud/remote_protocol.x: Rename remote_domain_event_ret to
  remote_domain_event_msg
* qemud/remote_generate_stubs.pl: Adding handling for new
  XXX_msg structs.
* src/remote_internal.c: Rename remote_domain_event_ret to
  remote_domain_event_msg
* qemud/remote_dispatch_prototypes.h, qemud/remote_dispatch_ret.h,
  qemud/remote_dispatch_table.h, qemud/remote_protocol.h,
  qemud/remote_protocol.c: auto-regenerate

qemud/remote.c
qemud/remote_dispatch_prototypes.h
qemud/remote_dispatch_ret.h
qemud/remote_dispatch_table.h
qemud/remote_generate_stubs.pl
qemud/remote_protocol.c
qemud/remote_protocol.h
qemud/remote_protocol.x
src/remote_internal.c

index 1a0e01a061a6a6773b74ea68928e09c2d90df154..4008bdb66c9c558eef4c413c444cadad1957308b 100644 (file)
@@ -4365,24 +4365,6 @@ remoteDispatchNodeDeviceDestroy(struct qemud_server *server ATTRIBUTE_UNUSED,
 }
 
 
-/**************************
- * Async Events
- **************************/
-static int
-remoteDispatchDomainEvent (struct qemud_server *server ATTRIBUTE_UNUSED,
-                           struct qemud_client *client ATTRIBUTE_UNUSED,
-                           virConnectPtr conn ATTRIBUTE_UNUSED,
-                           remote_error *rerr ATTRIBUTE_UNUSED,
-                           void *args ATTRIBUTE_UNUSED,
-                           remote_domain_event_ret *ret ATTRIBUTE_UNUSED)
-{
-    /* This call gets dispatched from a client call.
-     * This does not make sense, as this should not be intiated
-     * from the client side in generated code.
-     */
-    remoteDispatchFormatError(rerr, "%s", _("unexpected async event method call"));
-    return -1;
-}
 
 /***************************
  * Register / deregister events
@@ -4434,7 +4416,7 @@ remoteDispatchDomainEventSend (struct qemud_client *client,
     struct qemud_client_message *msg = NULL;
     XDR xdr;
     unsigned int len;
-    remote_domain_event_ret data;
+    remote_domain_event_msg data;
 
     if (VIR_ALLOC(msg) < 0)
         return;
@@ -4460,7 +4442,7 @@ remoteDispatchDomainEventSend (struct qemud_client *client,
     data.event = event;
     data.detail = detail;
 
-    if (!xdr_remote_domain_event_ret(&xdr, &data))
+    if (!xdr_remote_domain_event_msg(&xdr, &data))
         goto xdr_error;
 
 
index a20ac4ede55675e38d1e67198f70c229874c719f..aa9c3fc73995f3d6df07b4947ccce46b8b16ebe2 100644 (file)
@@ -114,13 +114,6 @@ static int remoteDispatchDomainDumpXml(
     remote_error *err,
     remote_domain_dump_xml_args *args,
     remote_domain_dump_xml_ret *ret);
-static int remoteDispatchDomainEvent(
-    struct qemud_server *server,
-    struct qemud_client *client,
-    virConnectPtr conn,
-    remote_error *err,
-    void *args,
-    remote_domain_event_ret *ret);
 static int remoteDispatchDomainEventsDeregister(
     struct qemud_server *server,
     struct qemud_client *client,
index d83ffd53ae0d2803f8b4b01bf674d3b6467799e3..fb4a86e7b9d6e005741d0a26fe9d0416d783e41b 100644 (file)
@@ -75,7 +75,6 @@
     remote_domain_memory_peek_ret val_remote_domain_memory_peek_ret;
     remote_domain_events_register_ret val_remote_domain_events_register_ret;
     remote_domain_events_deregister_ret val_remote_domain_events_deregister_ret;
-    remote_domain_event_ret val_remote_domain_event_ret;
     remote_domain_migrate_prepare2_ret val_remote_domain_migrate_prepare2_ret;
     remote_domain_migrate_finish2_ret val_remote_domain_migrate_finish2_ret;
     remote_get_uri_ret val_remote_get_uri_ret;
index ae0af284da9dd6819ed617051365eaa3ae04c026..f3a0b109ff78f983018d3c232b73b62b74c1cd75 100644 (file)
     .args_filter = (xdrproc_t) xdr_void,
     .ret_filter = (xdrproc_t) xdr_remote_domain_events_deregister_ret,
 },
-{   /* DomainEvent => 107 */
-    .fn = (dispatch_fn) remoteDispatchDomainEvent,
+{   /* Async event DomainEvent => 107 */
+    .fn = NULL,
     .args_filter = (xdrproc_t) xdr_void,
-    .ret_filter = (xdrproc_t) xdr_remote_domain_event_ret,
+    .ret_filter = (xdrproc_t) xdr_void,
 },
 {   /* DomainMigratePrepare2 => 108 */
     .fn = (dispatch_fn) remoteDispatchDomainMigratePrepare2,
index 44e1552cb34973588788f944690683c20c3ef178..9bca0ccfd5b32e2b5acdf53834d3700a9a987b9a 100755 (executable)
@@ -65,6 +65,16 @@ while (<>) {
                ret => "remote_${name}_ret"
            }
        }
+    } elsif (/^struct remote_(.*)_msg/) {
+       $name = $1;
+       $ProcName = name_to_ProcName ($name);
+
+       $calls{$name} = {
+           name => $name,
+           ProcName => $ProcName,
+           UC_NAME => uc $name,
+           msg => "remote_${name}_msg"
+       }
     } elsif (/^\s*REMOTE_PROC_(.*?)\s+=\s+(\d+),?$/) {
        $name = lc $1;
        $id = $2;
@@ -98,6 +108,9 @@ if ($opt_d) {
 elsif ($opt_p) {
     my @keys = sort (keys %calls);
     foreach (@keys) {
+       # Skip things which are REMOTE_MESSAGE
+       next if $calls{$_}->{msg};
+
        print "static int remoteDispatch$calls{$_}->{ProcName}(\n";
        print "    struct qemud_server *server,\n";
        print "    struct qemud_client *client,\n";
@@ -113,6 +126,7 @@ elsif ($opt_p) {
 elsif ($opt_a) {
     for ($id = 0 ; $id <= $#calls ; $id++) {
        if (defined $calls[$id] &&
+           !$calls[$id]->{msg} &&
            $calls[$id]->{args} ne "void") {
            print "    $calls[$id]->{args} val_$calls[$id]->{args};\n";
        }
@@ -124,6 +138,7 @@ elsif ($opt_a) {
 elsif ($opt_r) {
     for ($id = 0 ; $id <= $#calls ; $id++) {
        if (defined $calls[$id] &&
+           !$calls[$id]->{msg} &&
            $calls[$id]->{ret} ne "void") {
            print "    $calls[$id]->{ret} val_$calls[$id]->{ret};\n";
        }
@@ -134,7 +149,7 @@ elsif ($opt_r) {
 # ("remote_dispatch_table.h").
 elsif ($opt_t) {
     for ($id = 0 ; $id <= $#calls ; $id++) {
-       if (defined $calls[$id]) {
+       if (defined $calls[$id] && !$calls[$id]->{msg}) {
            print "{   /* $calls[$id]->{ProcName} => $id */\n";
            print "    .fn = (dispatch_fn) remoteDispatch$calls[$id]->{ProcName},\n";
            if ($calls[$id]->{args} ne "void") {
@@ -149,7 +164,11 @@ elsif ($opt_t) {
            }
            print "},\n";
        } else {
-           print "{   /* (unused) => $id */\n";
+           if ($calls[$id]->{msg}) {
+               print "{   /* Async event $calls[$id]->{ProcName} => $id */\n";
+           } else {
+               print "{   /* (unused) => $id */\n";
+           }
            print "    .fn = NULL,\n";
            print "    .args_filter = (xdrproc_t) xdr_void,\n";
            print "    .ret_filter = (xdrproc_t) xdr_void,\n";
index 5d09167cb1c357e1edd8e77aebcf77df454a5d1d..f6dac7a7fd70a3fdd73fb326179b171bb2050023 100644 (file)
@@ -2448,7 +2448,7 @@ xdr_remote_domain_events_deregister_ret (XDR *xdrs, remote_domain_events_deregis
 }
 
 bool_t
-xdr_remote_domain_event_ret (XDR *xdrs, remote_domain_event_ret *objp)
+xdr_remote_domain_event_msg (XDR *xdrs, remote_domain_event_msg *objp)
 {
 
          if (!xdr_remote_nonnull_domain (xdrs, &objp->dom))
index 87a5925be04b8a89d5e2ea07445540cb737d50df..21eae07bcf3ab59e1d7da879b7d707aed7894f04 100644 (file)
@@ -1378,12 +1378,12 @@ struct remote_domain_events_deregister_ret {
 };
 typedef struct remote_domain_events_deregister_ret remote_domain_events_deregister_ret;
 
-struct remote_domain_event_ret {
+struct remote_domain_event_msg {
         remote_nonnull_domain dom;
         int event;
         int detail;
 };
-typedef struct remote_domain_event_ret remote_domain_event_ret;
+typedef struct remote_domain_event_msg remote_domain_event_msg;
 
 struct remote_domain_xml_from_native_args {
         remote_nonnull_string nativeFormat;
@@ -1802,7 +1802,7 @@ extern  bool_t xdr_remote_node_device_create_xml_ret (XDR *, remote_node_device_
 extern  bool_t xdr_remote_node_device_destroy_args (XDR *, remote_node_device_destroy_args*);
 extern  bool_t xdr_remote_domain_events_register_ret (XDR *, remote_domain_events_register_ret*);
 extern  bool_t xdr_remote_domain_events_deregister_ret (XDR *, remote_domain_events_deregister_ret*);
-extern  bool_t xdr_remote_domain_event_ret (XDR *, remote_domain_event_ret*);
+extern  bool_t xdr_remote_domain_event_msg (XDR *, remote_domain_event_msg*);
 extern  bool_t xdr_remote_domain_xml_from_native_args (XDR *, remote_domain_xml_from_native_args*);
 extern  bool_t xdr_remote_domain_xml_from_native_ret (XDR *, remote_domain_xml_from_native_ret*);
 extern  bool_t xdr_remote_domain_xml_to_native_args (XDR *, remote_domain_xml_to_native_args*);
@@ -2037,7 +2037,7 @@ extern bool_t xdr_remote_node_device_create_xml_ret ();
 extern bool_t xdr_remote_node_device_destroy_args ();
 extern bool_t xdr_remote_domain_events_register_ret ();
 extern bool_t xdr_remote_domain_events_deregister_ret ();
-extern bool_t xdr_remote_domain_event_ret ();
+extern bool_t xdr_remote_domain_event_msg ();
 extern bool_t xdr_remote_domain_xml_from_native_args ();
 extern bool_t xdr_remote_domain_xml_from_native_ret ();
 extern bool_t xdr_remote_domain_xml_to_native_args ();
index 56385f44ac1dcb34150bbe8f53f687d4a43e90f1..1fb826b1cdddeb6e9e944f97ba7333871ff766f3 100644 (file)
@@ -1222,7 +1222,7 @@ struct remote_domain_events_deregister_ret {
     int cb_registered;
 };
 
-struct remote_domain_event_ret {
+struct remote_domain_event_msg {
     remote_nonnull_domain dom;
     int event;
     int detail;
index 423958942db5f64ecae5b8e1a5fd4997ae234492..c5ab4b1ce3684ea85637ff36bedc06a59513a7a9 100644 (file)
@@ -7099,23 +7099,23 @@ cleanup:
 static virDomainEventPtr
 remoteDomainReadEvent(virConnectPtr conn, XDR *xdr)
 {
-    remote_domain_event_ret ret;
+    remote_domain_event_msg msg;
     virDomainPtr dom;
     virDomainEventPtr event = NULL;
-    memset (&ret, 0, sizeof ret);
+    memset (&msg, 0, sizeof msg);
 
     /* unmarshall parameters, and process it*/
-    if (! xdr_remote_domain_event_ret(xdr, &ret) ) {
+    if (! xdr_remote_domain_event_msg(xdr, &msg) ) {
         error (conn, VIR_ERR_RPC,
-               _("remoteDomainProcessEvent: unmarshalling ret"));
+               _("remoteDomainProcessEvent: unmarshalling msg"));
         return NULL;
     }
 
-    dom = get_nonnull_domain(conn,ret.dom);
+    dom = get_nonnull_domain(conn,msg.dom);
     if (!dom)
         return NULL;
 
-    event = virDomainEventNewFromDom(dom, ret.event, ret.detail);
+    event = virDomainEventNewFromDom(dom, msg.event, msg.detail);
 
     virDomainFree(dom);
     return event;