[ovs-dev] [PATCH monitor_cond V2 08/12] lib: add to ovsdb-idl monitor_id

Liran Schour LIRANS at il.ibm.com
Fri Jan 22 09:59:41 UTC 2016


Andy Zhou <azhou at ovn.org> wrote on 22/01/2016 05:27:56 AM:

> On Sat, Jan 16, 2016 at 12:16 AM, Liran Schour <lirans at il.ibm.com> 
wrote:
> That will be used later to issue "monitor_cond_change" commands.
> 
> this commit message is not very helpful. 
>

Will add a more comprehensive commit message.
 
> Signed-off-by: Liran Schour <lirans at il.ibm.com>
> ---
>  lib/ovsdb-idl.c | 19 ++++++++++++++-----
>  lib/ovsdb-idl.h |  1 +
>  2 files changed, 15 insertions(+), 5 deletions(-)
> 
> diff --git a/lib/ovsdb-idl.c b/lib/ovsdb-idl.c
> index 18d4b8b..1b8731e 100644
> --- a/lib/ovsdb-idl.c
> +++ b/lib/ovsdb-idl.c
> @@ -86,6 +86,7 @@ enum ovsdb_idl_state {
>  struct ovsdb_idl {
>      const struct ovsdb_idl_class *class;
>      struct jsonrpc_session *session;
> +    struct uuid uuid;
> Why not just store uuid is "char *" form?  

Struct uuid is being used in all other places in the code. Why to do it 
differently here?

>      struct shash table_by_name;
>      struct ovsdb_idl_table *tables; /* Contains "struct 
> ovsdb_idl_table *"s.*/
>      unsigned int change_seqno;
> @@ -267,6 +268,7 @@ ovsdb_idl_create(const char *remote, const 
> struct ovsdb_idl_class *class,
>      idl->schema = NULL;
> 
>      hmap_init(&idl->outstanding_txns);
> +    uuid_generate(&idl->uuid);
> 
>      return idl;
>  }
> @@ -378,7 +380,7 @@ ovsdb_idl_run(struct ovsdb_idl *idl)
>              && !strcmp(msg->method, "update2")
>              && msg->params->type == JSON_ARRAY
>              && msg->params->u.array.n == 2
> -            && msg->params->u.array.elems[0]->type == JSON_NULL) {
> +            && msg->params->u.array.elems[0]->type == JSON_STRING) {
>              /* Database contents changed. */
>              ovsdb_idl_parse_update(idl, msg->params->u.array.elems[1],
>                                     OVSDB_UPDATE2);
> @@ -423,8 +425,8 @@ ovsdb_idl_run(struct ovsdb_idl *idl)
>          } else if (msg->type == JSONRPC_NOTIFY
>              && !strcmp(msg->method, "update")
>              && msg->params->type == JSON_ARRAY
> -            && msg->params->u.array.n == 2
> -            && msg->params->u.array.elems[0]->type == JSON_NULL) {
> +                   && msg->params->u.array.n == 2
> +                   && msg->params->u.array.elems[0]->type == 
JSON_STRING) {
>              /* Database contents changed. */
>              ovsdb_idl_parse_update(idl, msg->params->u.array.elems[1],
>                                     OVSDB_UPDATE);
> @@ -478,7 +480,11 @@ ovsdb_idl_wait(struct ovsdb_idl *idl)
>      jsonrpc_session_wait(idl->session);
>      jsonrpc_session_recv_wait(idl->session);
>  }
> -
> +/* Returns the id of the monitor session. */
> +const struct uuid * ovsdb_idl_get_monitor_id(const struct ovsdb_idl 
*idl)
> +{
> +    return &idl->uuid;
> +}
> 
> Is this function being used? 
>

No, it is a leftover from previous versions of the code. Will remove that.
  
>  /* Returns a "sequence number" that represents the state of 'idl'.  
When
>   * ovsdb_idl_run() changes the database, the sequence number changes.  
The
>   * initial fetch of the entire contents of the remote database is 
> considered to
> @@ -935,6 +941,7 @@ ovsdb_idl_send_monitor_request__(struct ovsdb_idl 
*idl,
>      struct shash *schema;
>      struct json *monitor_requests;
>      struct jsonrpc_msg *msg;
> +    char uuid[UUID_LEN + 1];
>      size_t i;
> 
>      schema = parse_schema(idl->schema);
> @@ -986,10 +993,12 @@ ovsdb_idl_send_monitor_request__(struct ovsdb_idl 
*idl,
>      free_schema(schema);
> 
>      json_destroy(idl->request_id);
> +
> +    snprintf(uuid, sizeof uuid, UUID_FMT, UUID_ARGS(&idl->uuid));
>      msg = jsonrpc_create_request(
>          method,
>          json_array_create_3(json_string_create(idl->class->database),
> -                            json_null_create(), monitor_requests),
> +                            json_string_create(uuid), 
monitor_requests),
>          &idl->request_id);
>      jsonrpc_session_send(idl->session, msg);
>  }
> diff --git a/lib/ovsdb-idl.h b/lib/ovsdb-idl.h
> index 136c38c..1cbaf35 100644
> --- a/lib/ovsdb-idl.h
> +++ b/lib/ovsdb-idl.h
> @@ -60,6 +60,7 @@ void ovsdb_idl_set_lock(struct ovsdb_idl *, const 
> char *lock_name);
>  bool ovsdb_idl_has_lock(const struct ovsdb_idl *);
>  bool ovsdb_idl_is_lock_contended(const struct ovsdb_idl *);
> 
> +const struct uuid  * ovsdb_idl_get_monitor_id(const struct ovsdb_idl 
*);
>  unsigned int ovsdb_idl_get_seqno(const struct ovsdb_idl *);
>  bool ovsdb_idl_has_ever_connected(const struct ovsdb_idl *);
>  void ovsdb_idl_enable_reconnect(struct ovsdb_idl *);
> --
> 2.1.4
> 
> 
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev




More information about the dev mailing list