DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: T t

⟦3f37582ee⟧ TextFile

    Length: 2597 (0xa25)
    Types: TextFile
    Names: »task_result.c«

Derivation

└─⟦2d1937cfd⟧ Bits:30007241 EUUGD22: P.P 5.0
    └─⟦35176feda⟧ »EurOpenD22/isode/isode-6.tar.Z« 
        └─⟦de7628f85⟧ 
            └─⟦this⟧ »isode-6.0/quipu/task_result.c« 

TextFile

/* task_result.c - */

#ifndef lint
static char *rcsid = "$Header: /f/osi/quipu/RCS/task_result.c,v 7.0 89/11/23 22:18:14 mrose Rel $";
#endif

/*
 * $Header: /f/osi/quipu/RCS/task_result.c,v 7.0 89/11/23 22:18:14 mrose Rel $
 *
 *
 * $Log:	task_result.c,v $
 * Revision 7.0  89/11/23  22:18:14  mrose
 * Release 6.0
 * 
 */

/*
 *                                NOTICE
 *
 *    Acquisition, use, and distribution of this module and related
 *    materials are subject to the restrictions of a license agreement.
 *    Consult the Preface in the User's Manual for the full terms of
 *    this agreement.
 *
 */


/* LINTLIBRARY */

#include "rosap.h"
#include "quipu/util.h"
#include "quipu/connection.h"

extern  LLog    * log_dsap;
void ros_log ();

/*
* The DSA has produced a result for the task, encode the result,
* generate an RO-RESULT.REQUEST and update the task block.
*/
task_result(task)
register        struct task_act * task;
{
    PE                          res_pe;
    int                         res_type;
    struct RoSAPindication      roi_s;
    struct RoSAPindication      *roi = &roi_s;
    struct RoSAPpreject         *rop = &(roi->roi_preject);
    struct ds_op_res            * arg;
    struct connection		* cn = task->tk_conn;

#ifndef NO_STATS
    extern LLog * log_stat;
    LLOG (log_stat, LLOG_TRACE,("Result sent (%d)",cn->cn_ad));
#endif

    DLOG(log_dsap, LLOG_TRACE, ("task_result"));

    if(task == NULLTASK)
    {
	LLOG(log_dsap, LLOG_FATAL, ("Task memerr 5"));
	return;
    }

    arg = task->tk_result;

    if(encode_OPResult(cn->cn_ctx, &res_pe, &res_type, arg) == OK)
    {
	watch_dog("RoResultRequest");
	if(RoResultRequest(cn->cn_ad, task->tk_id, res_type,
	  res_pe, task->tk_prio, roi) ==  NOTOK)
	{
	    watch_dog_reset();
	    ros_log(rop, "RO-RESULT.REQUEST");
	    if(ROS_FATAL(rop->rop_reason) || (rop->rop_reason == ROS_PARAMETER))
	    {
		LLOG(log_dsap, LLOG_FATAL, ("RoResult fatal PReject - fail the connection"));
		cn->cn_state = CN_FAILED;
	    }
	} else 
	    watch_dog_reset();

        DLOG(log_dsap, LLOG_TRACE, ("task_result 1"));
	pe_free(res_pe);
    }
    else
    {
	LLOG(log_dsap, LLOG_EXCEPTIONS, ("Couldnt encode result"));
	/*
	* Same comment as for net_send_ro_error !!
	* Cannot do nothing, but none of the reject codes fit!
	*/
	send_ro_ureject(cn->cn_ad, &(task->tk_id), ROS_IP_RELEASE);
    }

    DLOG(log_dsap, LLOG_TRACE, ("task_result 2"));
    if(cn->cn_state == CN_FAILED)
    {
        DLOG(log_dsap, LLOG_TRACE, ("task_result 4"));
	conn_extract(cn);
    }
    DLOG(log_dsap, LLOG_TRACE, ("task_result 5"));
}