|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T c
Length: 2546 (0x9f2) Types: TextFile Names: »conn_dispatch.c«
└─⟦2d1937cfd⟧ Bits:30007241 EUUGD22: P.P 5.0 └─⟦35176feda⟧ »EurOpenD22/isode/isode-6.tar.Z« └─⟦de7628f85⟧ └─⟦this⟧ »isode-6.0/quipu/conn_dispatch.c«
/* conn_dispatch.c - deal with an event on an open connection */ #ifndef lint static char *rcsid = "$Header: /f/osi/quipu/RCS/conn_dispatch.c,v 7.0 89/11/23 22:16:44 mrose Rel $"; #endif /* * $Header: /f/osi/quipu/RCS/conn_dispatch.c,v 7.0 89/11/23 22:16:44 mrose Rel $ * * * $Log: conn_dispatch.c,v $ * Revision 7.0 89/11/23 22:16:44 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. * */ #include "rosap.h" #include "tsap.h" #include "quipu/util.h" #include "quipu/connection.h" extern LLog * log_dsap; /* * Something has happened on the association with descriptor "ad". * Check what type of activity it is and dispatch to an appropriate * routine to handle the activity. */ conn_dispatch(cn) Conn cn; { struct RoSAPindication roi_s; struct RoSAPindication *roi = &roi_s; struct RoSAPpreject *rop = &(roi->roi_preject); extern void ros_log(); DLOG (log_dsap,LLOG_TRACE,( "conn_dispatch()")); watch_dog("RoWaitRequest"); if(RoWaitRequest(cn->cn_ad, OK, roi) == NOTOK) { watch_dog_reset(); ros_log(rop, "RoWaitRequest"); if (ROS_FATAL(rop->rop_reason)) { DLOG(log_dsap, LLOG_DEBUG, ("conn_dispatch calling conn_extract")); do_ds_unbind (cn); conn_extract(cn); } return; } watch_dog_reset(); switch(roi->roi_type) { case ROI_INVOKE: { struct RoSAPinvoke *rox = &(roi->roi_invoke); if (task_invoke(cn, rox) != OK) LLOG (log_dsap,LLOG_EXCEPTIONS,("task_invoke failed in conn_dispatch")); ROXFREE(rox); } break; case ROI_RESULT: { struct RoSAPresult *ror = &(roi->roi_result); oper_result(cn, ror); RORFREE(ror); } break; case ROI_ERROR: { struct RoSAPerror *roe = &(roi->roi_error); oper_error(cn, roe); ROEFREE(roe); } break; case ROI_UREJECT: { struct RoSAPureject *rou = &roi->roi_ureject; oper_ureject(cn, rou); } break; case ROI_PREJECT: { struct RoSAPpreject *rop2 = &roi->roi_preject; oper_preject(cn, rop2); ROPFREE(rop2); } break; case ROI_FINISH: { struct AcSAPfinish *acf = &roi->roi_finish; conn_finish(cn, acf); } break; default: LLOG (log_dsap,LLOG_EXCEPTIONS,( "Unknown indication type : %d", roi->roi_type)); break; } }