Annotation of 43BSDReno/contrib/isode-beta/quipu/conn.c, revision 1.1.1.1

1.1       root        1: /* conn.c - */
                      2: 
                      3: #ifndef lint
                      4: static char *rcsid = "$Header: /f/osi/quipu/RCS/conn.c,v 7.1 90/07/09 14:45:21 mrose Exp $";
                      5: #endif
                      6: 
                      7: /*
                      8:  * $Header: /f/osi/quipu/RCS/conn.c,v 7.1 90/07/09 14:45:21 mrose Exp $
                      9:  *
                     10:  *
                     11:  * $Log:       conn.c,v $
                     12:  * Revision 7.1  90/07/09  14:45:21  mrose
                     13:  * sync
                     14:  * 
                     15:  * Revision 7.0  89/11/23  22:16:42  mrose
                     16:  * Release 6.0
                     17:  * 
                     18:  */
                     19: 
                     20: /*
                     21:  *                                NOTICE
                     22:  *
                     23:  *    Acquisition, use, and distribution of this module and related
                     24:  *    materials are subject to the restrictions of a license agreement.
                     25:  *    Consult the Preface in the User's Manual for the full terms of
                     26:  *    this agreement.
                     27:  *
                     28:  */
                     29: 
                     30: #include "quipu/dsap.h"
                     31: #include "quipu/util.h"
                     32: #include "quipu/connection.h"
                     33: 
                     34: extern LLog * log_dsap;
                     35: 
                     36: struct connection      * conn_alloc()
                     37: {
                     38:     struct connection * conn_ret;
                     39: 
                     40:     conn_ret = (struct connection *) calloc(1,sizeof(struct connection));
                     41:     conn_ret->cn_op_id = 1;
                     42: 
                     43:     return(conn_ret);
                     44: }
                     45: 
                     46: conn_free(conn)
                     47: struct connection      * conn;
                     48: {
                     49:        DLOG(log_dsap, LLOG_TRACE, ("conn_free()"));
                     50: 
                     51:     if(conn->cn_dn != NULLDN)
                     52:        dn_free(conn->cn_dn);
                     53: 
                     54:     if (conn->cn_initiator)
                     55:     {
                     56:        conn_connect_free (&(conn->cn_connect));
                     57:     }
                     58:     else
                     59:     {
                     60:        conn_start_free (&(conn->cn_start));
                     61:     }
                     62: 
                     63:     free((char *)conn);
                     64: }
                     65: 
                     66: conn_connect_free (cc)
                     67: struct conn_connect    * cc;
                     68: {
                     69:     bind_arg_free (&(cc->cc_req));
                     70: 
                     71:     DCFREE (&(cc->cc_dc));
                     72: }
                     73: 
                     74: conn_start_free (cs)
                     75: struct conn_start      * cs;
                     76: {
                     77:     if (cs->cs_svec[0])
                     78:        free (cs->cs_svec[0]);
                     79:     if (cs->cs_svec[1])
                     80:        free (cs->cs_svec[1]);
                     81:     if (cs->cs_svec[2])
                     82:        free (cs->cs_svec[2]);
                     83:     if (cs->cs_svec[3])
                     84:        free (cs->cs_svec[3]);
                     85: 
                     86:     bind_arg_free (&(cs->cs_res));     
                     87: 
                     88:     DSFREE (&(cs->cs_ds));
                     89: }
                     90: 
                     91: conn_extract(conn)
                     92: struct connection      * conn;
                     93: {
                     94:     /*
                     95:     * Extract all the operations made on this connection, and all
                     96:     * the tasks (and their derivative operations) made on the connection;
                     97:     * then remove the connection from the list of active connections.
                     98:     */
                     99: 
                    100:     struct oper_act     * on;
                    101:     struct oper_act     * on_next;
                    102:     struct task_act     * tk;
                    103:     struct task_act     * tk_next;
                    104:     struct connection  * cn;
                    105:     struct connection  **cn_p;
                    106:     struct DSError     * err;
                    107: 
                    108:     DLOG (log_dsap,LLOG_TRACE, ("conn_extract"));
                    109: 
                    110:     if(conn == NULLCONN)
                    111:     {
                    112:        LLOG(log_dsap, LLOG_EXCEPTIONS, ("Extracting NULLCONN!!!"));
                    113:        return;
                    114:     }
                    115: 
                    116:     cn_p = &(connlist);
                    117:     for(cn=connlist; cn!=NULLCONN; cn=cn->cn_next)
                    118:     {
                    119:        DLOG(log_dsap, LLOG_DEBUG, ("checking connlist"));
                    120:        if(cn == conn)
                    121:            break;
                    122: 
                    123:        cn_p = &(cn->cn_next);
                    124:     }
                    125:     if(cn==NULLCONN)
                    126:     {
                    127:        LLOG(log_dsap, LLOG_EXCEPTIONS, ("conn_extract - connection not in connlist"));
                    128:     }
                    129:     else
                    130:     {
                    131:        /* Cut connection loose from global list */
                    132:        DLOG(log_dsap, LLOG_DEBUG, ("Extracting conn from connlist"));
                    133:        (*cn_p) = cn->cn_next;
                    134:        conns_used--;
                    135:     }
                    136: 
                    137:     for(on=conn->cn_operlist; on!=NULLOPER; on=on_next)
                    138:     {
                    139:        on_next = on->on_next_conn;
                    140:        oper_fail_wakeup (on);
                    141:     }
                    142: 
                    143:     for(tk=conn->cn_tasklist; tk!=NULLTASK; tk=tk_next)
                    144:     {
                    145:            tk_next = tk->tk_next;
                    146:            err = &(tk->tk_resp.di_error.de_err);
                    147:            if((err->dse_type != DSE_REFERRAL) && (err->dse_type != DSE_DSAREFERRAL))
                    148:            {
                    149:                err->dse_type = DSE_SERVICEERROR;
                    150:                err->ERR_SERVICE.DSE_sv_problem = DSE_SV_UNAVAILABLE;
                    151:            }
                    152:            task_error(tk);
                    153:            task_extract(tk);
                    154:     }
                    155: 
                    156:     conn_free(conn);
                    157: }
                    158: 
                    159: conn_log(conn)
                    160: struct connection       * conn;
                    161: {
                    162:     struct oper_act     * oper;
                    163:     struct task_act     * task;
                    164: 
                    165:     if(conn == NULLCONN)
                    166:     {
                    167:        LLOG (log_dsap,LLOG_NOTICE, ("Connection: NULLCONN"));
                    168:        return;
                    169:     }
                    170: 
                    171:     DLOG (log_dsap,LLOG_DEBUG, ("Connection [%x], ad = %d, ctx = %d", conn, conn->cn_ad, conn->cn_ctx));
                    172: 
                    173: #ifdef DEBUG
                    174:     switch(conn->cn_state)
                    175:     {
                    176:     case CN_INDICATED:
                    177:        DLOG (log_dsap,LLOG_DEBUG, ("State: INDICATED"));
                    178:     break;
                    179:     case CN_WAITING:
                    180:        DLOG (log_dsap,LLOG_DEBUG, ("State: WAITING"));
                    181:     break;
                    182:     case CN_CONNECTING1:
                    183:        DLOG (log_dsap,LLOG_DEBUG, ("State: CONNECTING 1"));
                    184:     break;
                    185:     case CN_CONNECTING2:
                    186:        DLOG (log_dsap,LLOG_DEBUG, ("State: CONNECTING 2"));
                    187:     break;
                    188:     case CN_OPEN:
                    189:        DLOG (log_dsap,LLOG_DEBUG, ("State: OPEN"));
                    190:     break;
                    191:     case CN_FAILED:
                    192:        DLOG (log_dsap,LLOG_DEBUG, ("State: FAIL"));
                    193:     break;
                    194:     case CN_CLOSING:
                    195:        DLOG (log_dsap,LLOG_DEBUG, ("State: CLOSING"));
                    196:     break;
                    197:     case CN_OPENING:
                    198:        DLOG (log_dsap,LLOG_DEBUG, ("State: OPENING"));
                    199:     break;
                    200:     default:
                    201:        DLOG (log_dsap,LLOG_DEBUG, ("State: Erroneous - %d",conn->cn_state));
                    202:     break;
                    203:     }
                    204: #endif
                    205: 
                    206:     DLOG (log_dsap,LLOG_DEBUG, ("Tasks:"));
                    207:     for(task=conn->cn_tasklist; task!=NULLTASK; task=task->tk_next)
                    208:        task_log(task);
                    209:     DLOG (log_dsap,LLOG_DEBUG, ("Opers:"));
                    210:     for(oper=conn->cn_operlist; oper!=NULLOPER; oper=oper->on_next_conn)
                    211:        oper_log(oper);
                    212:     DLOG (log_dsap,LLOG_DEBUG, ("!"));
                    213: }
                    214: 
                    215: conn_list_log(cn)
                    216: struct connection      * cn;
                    217: {
                    218:     struct connection  * cn_tmp;
                    219: 
                    220:     DLOG(log_dsap, LLOG_DEBUG, ("Connection List:"));
                    221:     for(cn_tmp=cn; cn_tmp!=NULLCONN; cn_tmp=cn_tmp->cn_next)
                    222:     {
                    223:        conn_log(cn_tmp);
                    224:     }
                    225:     DLOG(log_dsap, LLOG_DEBUG, ("End of Connection List."));
                    226: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.