Diff for /libaitrpc/src/lists.c between versions 1.9.2.1 and 1.9.2.4

version 1.9.2.1, 2012/05/15 22:47:10 version 1.9.2.4, 2012/05/18 15:24:33
Line 52  SUCH DAMAGE. Line 52  SUCH DAMAGE.
  * @srv = RPC Server instance   * @srv = RPC Server instance
  * @tag = Function tag   * @tag = Function tag
  * @funcaddr = Function address   * @funcaddr = Function address
  * @args = Number of return function arguments  
  * return: -1 error, 0 already registered tag or 1 register ok   * return: -1 error, 0 already registered tag or 1 register ok
  */   */
 int  int
rpc_srv_registerCall(rpc_srv_t * __restrict srv, u_short tag, void *funcaddr, u_short args)rpc_srv_registerCall(rpc_srv_t * __restrict srv, u_short tag, void *funcaddr)
 {  {
         rpc_func_t *func;          rpc_func_t *func;
   
Line 81  rpc_srv_registerCall(rpc_srv_t * __restrict srv, u_sho Line 80  rpc_srv_registerCall(rpc_srv_t * __restrict srv, u_sho
         AIT_KEY(&func->func_name) = tag;          AIT_KEY(&func->func_name) = tag;
         AIT_SET_PTR(&func->func_name, funcaddr, 0);          AIT_SET_PTR(&func->func_name, funcaddr, 0);
   
         /* allocate return variables */  
         if (args > 0 && !(func->func_vars = io_allocVars(args))) {  
                 AIT_FREE_VAL(&func->func_name);  
                 free(func);  
                 return -1;  
         }  
   
         /* add to list of functions */          /* add to list of functions */
         TAILQ_INSERT_TAIL(&srv->srv_funcs, func, func_node);          TAILQ_INSERT_TAIL(&srv->srv_funcs, func, func_node);
         return 1;          return 1;
Line 116  rpc_srv_unregisterCall(rpc_srv_t * __restrict srv, u_s Line 108  rpc_srv_unregisterCall(rpc_srv_t * __restrict srv, u_s
   
         TAILQ_REMOVE(&srv->srv_funcs, f, func_node);          TAILQ_REMOVE(&srv->srv_funcs, f, func_node);
   
         io_freeVars(&f->func_vars);  
         AIT_FREE_VAL(&f->func_name);          AIT_FREE_VAL(&f->func_name);
         free(f);          free(f);
         return 1;          return 1;
Line 158  rpc_srv_getCall(rpc_srv_t * __restrict srv, uint16_t t Line 149  rpc_srv_getCall(rpc_srv_t * __restrict srv, uint16_t t
 inline rpc_blob_t *  inline rpc_blob_t *
 rpc_srv_getBLOB(rpc_srv_t * __restrict srv, uint32_t var)  rpc_srv_getBLOB(rpc_srv_t * __restrict srv, uint32_t var)
 {  {
        rpc_blob_t *b;        rpc_blob_t *b, *tmp;
   
         if (!srv) {          if (!srv) {
                 rpc_SetErr(EINVAL, "Invalid parameter can`t get BLOB variable");                  rpc_SetErr(EINVAL, "Invalid parameter can`t get BLOB variable");
                 return NULL;                  return NULL;
         }          }
   
        for (b = srv->srv_blob.blobs; b; b = b->blob_next) {        TAILQ_FOREACH_SAFE(b, &srv->srv_blob.blobs, blob_node, tmp)
                 if (b->blob_var == var)                  if (b->blob_var == var)
                         break;                          break;
         }  
   
         return b;          return b;
 }  }
Line 191  rpc_srv_registerBLOB(rpc_srv_t * __restrict srv, size_ Line 181  rpc_srv_registerBLOB(rpc_srv_t * __restrict srv, size_
         }          }
   
         blob = rpc_srv_blobCreate(srv, len);          blob = rpc_srv_blobCreate(srv, len);
         if (blob) {  
                 blob->blob_next = srv->srv_blob.blobs;  
                 srv->srv_blob.blobs = blob;  
         }  
   
           TAILQ_INSERT_TAIL(&srv->srv_blob.blobs, blob, blob_node);
         return blob;          return blob;
 }  }
   
Line 209  rpc_srv_registerBLOB(rpc_srv_t * __restrict srv, size_ Line 196  rpc_srv_registerBLOB(rpc_srv_t * __restrict srv, size_
 int  int
 rpc_srv_unregisterBLOB(rpc_srv_t * __restrict srv, uint32_t var)  rpc_srv_unregisterBLOB(rpc_srv_t * __restrict srv, uint32_t var)
 {  {
        rpc_blob_t *b, *curr;        rpc_blob_t *b;
   
         if (!srv) {          if (!srv) {
                 rpc_SetErr(EINVAL, "Invalid parameter can`t unregister BLOB variable");                  rpc_SetErr(EINVAL, "Invalid parameter can`t unregister BLOB variable");
Line 219  rpc_srv_unregisterBLOB(rpc_srv_t * __restrict srv, uin Line 206  rpc_srv_unregisterBLOB(rpc_srv_t * __restrict srv, uin
         b = rpc_srv_getBLOB(srv, var);          b = rpc_srv_getBLOB(srv, var);
         if (!b)                         /* not found element for unregister */          if (!b)                         /* not found element for unregister */
                 return 0;                  return 0;
         /* if BLOB is unmapped force to unmap object */  
         if (b->blob_data)  
                 rpc_srv_blobUnmap(b);  
   
        if (srv->srv_blob.blobs == b) { /* if is 1st element */        TAILQ_REMOVE(&srv->srv_blob.blobs, b, blob_node);
                srv->srv_blob.blobs = srv->srv_blob.blobs->blob_next;
        } else { 
                for (curr = srv->srv_blob.blobs; curr->blob_next != b; curr = curr->blob_next); 
                curr->blob_next = curr->blob_next->blob_next; 
        } 
         rpc_srv_blobFree(srv, b);          rpc_srv_blobFree(srv, b);
         free(b);          free(b);
   
         return 1;          return 1;
 }  }

Removed from v.1.9.2.1  
changed lines
  Added in v.1.9.2.4


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>