ncbi_connector.c
上传用户:yhdzpy8989
上传日期:2007-06-13
资源大小:13604k
文件大小:4k
源码类别:

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: ncbi_connector.c,v $
  4.  * PRODUCTION Revision 1000.0  2003/10/29 16:35:56  gouriano
  5.  * PRODUCTION PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R6.7
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /* $Id: ncbi_connector.c,v 1000.0 2003/10/29 16:35:56 gouriano Exp $
  10.  * ===========================================================================
  11.  *
  12.  *                            PUBLIC DOMAIN NOTICE
  13.  *               National Center for Biotechnology Information
  14.  *
  15.  *  This software/database is a "United States Government Work" under the
  16.  *  terms of the United States Copyright Act.  It was written as part of
  17.  *  the author's official duties as a United States Government employee and
  18.  *  thus cannot be copyrighted.  This software/database is freely available
  19.  *  to the public for use. The National Library of Medicine and the U.S.
  20.  *  Government have not placed any restriction on its use or reproduction.
  21.  *
  22.  *  Although all reasonable efforts have been taken to ensure the accuracy
  23.  *  and reliability of the software and data, the NLM and the U.S.
  24.  *  Government do not and cannot warrant the performance or results that
  25.  *  may be obtained by using this software or data. The NLM and the U.S.
  26.  *  Government disclaim all warranties, express or implied, including
  27.  *  warranties of performance, merchantability or fitness for any particular
  28.  *  purpose.
  29.  *
  30.  *  Please cite the author in any work or product based on this material.
  31.  *
  32.  * ===========================================================================
  33.  *
  34.  * Author:  Anton Lavrentiev
  35.  *
  36.  * File Description:
  37.  *   This is generally not for the public use.
  38.  *   Implementation of functions of meta-connector.
  39.  *
  40.  */
  41. #include "ncbi_priv.h"
  42. #include <connect/ncbi_connector.h>
  43. /* Standard logging message
  44.  */
  45. #define METACONN_LOG(level, descr)                      
  46.   CORE_LOGF(level,                                      
  47.             ("%s (connector "%s", error "%s")",     
  48.             descr, (*meta->get_type)(meta->c_get_type), 
  49.             IO_StatusStr(status)))
  50. extern EIO_Status METACONN_Remove
  51. (SMetaConnector* meta,
  52.  CONNECTOR       connector)
  53. {
  54.     if (connector) {
  55.         CONNECTOR x_conn;
  56.         
  57.         for (x_conn = meta->list; x_conn; x_conn = x_conn->next)
  58.             if (x_conn == connector)
  59.                 break;
  60.         if (!x_conn) {
  61.             EIO_Status status = eIO_Unknown;
  62.             METACONN_LOG(eLOG_Error,
  63.                          "[METACONN_Remove]  Connector is not in connection");
  64.             return status;
  65.         }
  66.     }
  67.     while (meta->list) {
  68.         CONNECTOR victim = meta->list;
  69.         meta->list = victim->next;
  70.         victim->meta = 0;
  71.         victim->next = 0;
  72.         if (victim->destroy)
  73.             victim->destroy(victim);
  74.         if (victim == connector)
  75.             break;
  76.     }
  77.     return eIO_Success;
  78. }
  79. extern EIO_Status METACONN_Add
  80. (SMetaConnector* meta,
  81.  CONNECTOR       connector)
  82. {
  83.     assert(connector && meta);
  84.     if (connector->next || !connector->setup) {
  85.         EIO_Status status = eIO_Unknown;
  86.         METACONN_LOG(eLOG_Error,
  87.                      "[METACONN_Add]  Input connector is in use/uninitable");
  88.         return status;
  89.     }
  90.     connector->setup(meta, connector);
  91.     connector->meta = meta;
  92.     connector->next = meta->list;
  93.     meta->list = connector;
  94.     return eIO_Success;
  95. }
  96. /*
  97.  * --------------------------------------------------------------------------
  98.  * $Log: ncbi_connector.c,v $
  99.  * Revision 1000.0  2003/10/29 16:35:56  gouriano
  100.  * PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R6.7
  101.  *
  102.  * Revision 6.7  2002/08/13 19:29:49  lavr
  103.  * Log moved to end
  104.  *
  105.  * Revision 6.6  2002/04/26 16:31:06  lavr
  106.  * Minor style changes in call-by-pointer functions
  107.  *
  108.  * Revision 6.5  2002/03/22 22:17:29  lavr
  109.  * No <stdlib.h> needed in here, removed
  110.  *
  111.  * Revision 6.4  2001/03/02 20:07:56  lavr
  112.  * Typo fixed
  113.  *
  114.  * Revision 6.3  2001/01/25 16:57:08  lavr
  115.  * METACONN_Remove revoked call to free() with connector:
  116.  * connector's DESTROY method is now (back) responsible to call free().
  117.  *
  118.  * Revision 6.2  2001/01/12 23:51:38  lavr
  119.  * Message logging modified for use LOG facility only
  120.  *
  121.  * Revision 6.1  2000/12/29 17:49:29  lavr
  122.  * Initial revision
  123.  *
  124.  * ==========================================================================
  125.  */