Diff for /libaitrpc/src/blob.c between versions 1.1.2.1 and 1.1.2.2

version 1.1.2.1, 2010/06/23 15:07:15 version 1.1.2.2, 2010/06/23 16:23:31
Line 1 Line 1
 #include "global.h"  #include "global.h"
   
   
   /*
    * rpc_srv_blobMap() Map blob to memory region 
    * @srv = RPC Server instance
    * @blob = Map to this BLOB element
    * return: -1 error or 0 ok
    */
   inline int
   rpc_srv_blobMap(rpc_srv_t * __restrict srv, rpc_blob_t * __restrict blob)
   {
           int f;
           struct stat sb;
           char szFName[MAXPATHLEN];
   
           if (!blob) {
                   rpc_SetErr(EINVAL, "Error:: invalid arguments ...\n");
                   return -1;
           }
   
           memset(szFName, 0, MAXPATHLEN);
           snprintf(szFName, MAXPATHLEN, BLOB_FILE, srv->srv_blob.dir, blob->blob_var);
           f = open(szFName, O_RDONLY);
           if (f == -1) {
                   LOGERR;
                   return -1;
           }
           if (fstat(f, &sb) == -1) {
                   LOGERR;
                   close(f);
                   return -1;
           }
   
           blob->blob_data = mmap(NULL, sb.st_size, PROT_READ, MAP_PRIVATE, f, 0);
           if (blob->blob_data == MAP_FAILED) {
                   LOGERR;
                   close(f);
                   blob->blob_data = NULL;
                   return -1;
           } else {
                   blob->blob_len = sb.st_size;
                   close(f);
           }
   
           return 0;
   }
   
   /*
    * rpc_srv_blobUnmap() Unmap blob memory region 
    * @blob = Mapped BLOB element
    * return: none
    */
   inline void
   rpc_srv_blobUnmap(rpc_blob_t * __restrict blob)
   {
           if (!blob || !blob->blob_data)
                   rpc_SetErr(EINVAL, "Error:: invalid arguments ...\n");
           else {
                   munmap(blob->blob_data, blob->blob_len);
                   blob->blob_data = NULL;
                   blob->blob_len = 0;
           }
   }
   
   /*
    * rpc_srv_blobFree() Free blob from disk & memory
    * @srv = RPC Server instance
    * @blob = Mapped BLOB element
    * return: -1 error or 0 ok
    */
   inline int
   rpc_srv_blobFree(rpc_srv_t * __restrict srv, rpc_blob_t * __restrict blob)
   {
           char szFName[MAXPATHLEN];
   
           if (!blob) {
                   rpc_SetErr(EINVAL, "Error:: invalid arguments ...\n");
                   return -1;
           }
   
           if (blob->blob_data)
                   rpc_srv_blobUnmap(blob);
   
           memset(szFName, 0, MAXPATHLEN);
           snprintf(szFName, MAXPATHLEN, BLOB_FILE, srv->srv_blob.dir, blob->blob_var);
           if (remove(szFName) == -1) {
                   LOGERR;
                   return -1;
           }
   
           return 0;
   }
   
   // ------------------------------------------------------------
   
   int
   rpc_srv_sendBLOB(rpc_cli_t * __restrict cli, rpc_blob_t *blob)
   {
           int ret = 0;
           uint8_t buf[BLOBSIZ];
   
           if (!cli || !blob) {
                   rpc_SetErr(EINVAL, "Error:: invalid arguments ...\n");
                   return -1;
           }
   
           do {
           } while (ret);
   
           return blob->blob_len;
   }

Removed from v.1.1.2.1  
changed lines
  Added in v.1.1.2.2


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