Annotation of 43BSDReno/contrib/isode-beta/quipu/conn.c, revision 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.