Merge branch 'master' into mariusbucur/dmq
authorMarius Bucur <marius@marius-bucur.ro>
Sat, 4 Jun 2011 07:35:37 +0000 (10:35 +0300)
committerMarius Bucur <marius@marius-bucur.ro>
Sat, 4 Jun 2011 07:35:37 +0000 (10:35 +0300)
Conflicts:
modules_k/htable/ht_api.c
modules_k/htable/ht_api.h

1  2 
modules_k/htable/ht_api.c
modules_k/htable/ht_api.h
modules_k/htable/ht_var.c
modules_k/htable/ht_var.h
modules_k/htable/htable.c

@@@ -117,7 -216,8 +216,8 @@@ ht_t* ht_get_table(str *name
        return NULL;
  }
  
- int ht_pkg_init(str *name, int autoexp, str *dbtable, int size, int dbmode, int usedmq)
 -int ht_add_table(str *name, int autoexp, str *dbtable, int size, int dbmode,
++int ht_add_table(str *name, int autoexp, str *dbtable, int size, int dbmode, int dmq,
+               int itype, int_str *ival)
  {
        unsigned int htid;
        ht_t *ht;
        if(dbtable!=NULL && dbtable->len>0)
                ht->dbtable = *dbtable;
        ht->dbmode = dbmode;
-       ht->usedmq = usedmq;
-       ht->next = _ht_pkg_root;
-       _ht_pkg_root = ht;
++      ht->dmq = dmq;
+       ht->flags = itype;
+       if(ival!=NULL)
+               ht->initval = *ival;
+       ht->next = _ht_root;
+       _ht_root = ht;
        return 0;
  }
  
@@@ -515,14 -715,19 +716,20 @@@ int ht_table_spec(char *spec
        str name;
        str dbtable = {0, 0};
        unsigned int autoexpire = 0;
-       unsigned int usedmq = 0;
        unsigned int size = 4;
-       int type = 0;
        unsigned int dbmode = 0;
++      unsigne int dmq = 0;
        str in;
        str tok;
-       char *p;
+       param_t *pit=NULL;
+       int_str ival;
+       int itype;
  
+       if(!shm_initialized())
+       {
+               LM_ERR("shared memory was not initialized\n");
+               return -1;
+       }
        /* parse: name=>dbtable=abc;autoexpire=123;size=123*/
        in.s = spec;
        in.len = strlen(in.s);
                                goto error;
                        LM_DBG("htable [%.*s] - dbmode [%u]\n", name.len, name.s,
                                        dbmode);
-                       break;
-               case 5:
-                       if(str2int(&tok, &usedmq)!=0)
+               } else if(pit->name.len==7 && strncmp(pit->name.s, "initval", 7)==0) {
+                       if(str2sint(&tok, &ival.n)!=0)
                                goto error;
-                       LM_DBG("htable [%.*s] - usedmq [%u]\n", name.len, name.s,
-                                       usedmq);
-                       break;
+                       itype = PV_VAL_INT;
+                       LM_DBG("htable [%.*s] - initval [%d]\n", name.len, name.s,
+                                       ival.n);
++              } else if(tok.len==3 && strncmp(tok.s, "dmq", 3)==0) {
++                      if(str2sint(&tok, &dmq)!=0)
++                              goto error;
++                      LM_DBG("htable [%.*s] - dmq [%d]\n", name.len, name.s,
++                                      dmq);
+               } else { goto error; }
        }
-       while(p<in.s+in.len && (*p==';' || *p==' ' || *p=='\t'
-                               || *p=='\n' || *p=='\r'))
-               p++;
-       if(p<in.s+in.len)
-               goto next_token;
  
-       return ht_pkg_init(&name, autoexpire, &dbtable, size, dbmode, usedmq);
 -      return ht_add_table(&name, autoexpire, &dbtable, size, dbmode,
++      return ht_add_table(&name, autoexpire, &dbtable, size, dbmode, dmq,
+                       itype, &ival);
  
  error:
-       LM_ERR("invalid htable parameter [%.*s] at [%d]\n", in.len, in.s,
-                       (int)(p-in.s));
+       LM_ERR("invalid htable parameter [%.*s]\n", in.len, in.s);
        return -1;
  }
  
@@@ -55,7 -55,8 +55,9 @@@ typedef struct _h
        unsigned int htexpire;
        str dbtable;
        int dbmode;
-       int usedmq;
++      int dmq;
+       int flags;
+       int_str initval;
        unsigned int htsize;
        ht_entry_t *entries;
        struct _ht *next;
@@@ -67,8 -68,9 +69,9 @@@ typedef struct _ht_pv 
        pv_elem_t *pve;
  } ht_pv_t, *ht_pv_p;
  
- int ht_pkg_init(str *name, int autoexp, str *dbtable, int size, int dbmode, int usedmq);
- int ht_shm_init(void);
 -int ht_add_table(str *name, int autoexp, str *dbtable, int size, int dbmode,
++int ht_add_table(str *name, int autoexp, str *dbtable, int size, int dbmode, int dmq,
+               int itype, int_str *ival);
+ int ht_init_tables(void);
  int ht_destroy(void);
  int ht_set_cell(ht_t *ht, str *name, int type, int_str *val, int mode);
  int ht_del_cell(ht_t *ht, str *name);
Simple merge
Simple merge
Simple merge