|
|
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: 6670 (0x1a0e)
Types: TextFile
Names: »connection.h«
└─⟦3d0c2be1b⟧ Bits:30001254 ISODE-5.0 Tape
└─⟦eba4602b1⟧ »./isode-5.0.tar.Z«
└─⟦d3ac74d73⟧
└─⟦this⟧ »isode-5.0/h/quipu/connection.h«
/* connection.h - directory internal structures */
/*
* $Header: /f/osi/h/quipu/RCS/connection.h,v 6.1 89/03/23 22:27:33 mrose Exp $
*
*
* $Log: connection.h,v $
* Revision 6.1 89/03/23 22:27:33 mrose
* out-the-door
*
* Revision 6.0 89/03/18 23:32:48 mrose
* Release 5.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.
*
*/
#ifndef QUIPUCON
#define QUIPUCON
#define ASYNC_DSA
#include "psap2.h"
#include "acsap.h"
#include "quipu/common.h"
#include "quipu/dsargument.h"
#define DB_NDATA 1 /* Number of PE's expected for Bind info. */
#define DSA_PRIO_LOW 1
#define DSA_PRIO_MED 2
#define DSA_PRIO_HIGH 3
#define DSA_MAX_PRIO 3
#define INITIATED_BY_THIS 1
#define INITIATED_BY_THAT 2
#define ACTIVITY_NET_WAIT 1
#define ACTIVITY_DSA_WORK 2
#define ACTIVITY_NET_SEND 3
#define ACTIVITY_COLLATE 4
#define ACTIVITY_ABANDON 5
#define ACT_TYPE_REQ 1
#define ACT_TYPE_CHN 2
#define ACT_TYPE_RESP 3
#define RESP_TYPE_RET 1
#define RESP_TYPE_REJ 2
#define RET_TYPE_RES 1
#define RET_TYPE_ERR 2
/*
* This structure provides a means of collecting and thus reusing
* information about an entity in terms of ISODE. This is changeable
* from day to day as coding proceeds and more isode routine parameters
* are discovered. Will also probably change if the isode databases
* are replaced by a directory! And when stable this structure should
* be integrated with the dsa_info structure above.
*/
typedef
struct quipu_dsa_info
{
AEI aei; /* AEI for this DSA */
struct PSAPaddr *addr; /* Address for this DSA */
int p_req; /* Presentation requirements */
int s_req; /* Session requirements */
long isn; /* Initial serial number */
int settings; /* Settings */
struct QOStype qos; /* Quality of service */
int async; /* Sync or Asyn Assoc Request */
} *DSAinfo;
typedef
struct init_response
{
char init_resp_type;
char init_ret_type;
struct ds_bind_arg init_resp_res;
struct ds_bind_error init_resp_err;
} InitResponse;
typedef
struct init_activity
{
char ia_class;
char ia_type;
int ia_status;
int ia_reason;
struct AcSAPstart * ia_acs;
int ia_defctxres;
struct ds_bind_arg ia_req;
struct init_response ia_resp;
} InitActivity;
typedef
struct exit_activity
{
char exit_act_class;
char exit_act_type;
int exit_act_prio;
} ExitActivity;
typedef
struct response
{
char resp_type;
char ret_type;
struct ds_op_res resp_res;
struct DSError resp_err;
int resp_rej;
ContinuationRef resp_ref;
} OpenResponse;
typedef
struct activity
{
int act_id;
int act_prio;
char act_class;
char act_type;
struct ds_op_arg act_req;
struct chain_arg *act_cha;
struct common_args *act_ca;
struct response act_resp;
struct ds_op_res *act_result;
struct DSError *act_error;
char act_initiator;
/* Specific additions to provide multi-subtask search implementation */
struct ds_search_task *local_st;
struct ds_search_task *refer_st;
struct ds_search_task *referred_st;
struct activity *tk_operlist;
struct activity *tk_next;
struct ds_op_arg *on_arg;
struct continuation_ref *on_cr_next;
struct access_point *on_ap_next;
struct activity *on_task;
struct activity *on_next_conn;
struct activity *on_next_task;
struct connection *act_conn;
} OpenActivity;
#define NULLACTIVITY ((struct activity *) 0)
/*
* Conn is the structure used to represent external connections
*/
typedef
struct connection
{
char cn_state;
#define CN_STATE_INIT 1
#define CN_STATE_OPEN 2
#define CN_STATE_EXIT 3
#define CN_STATE_FAIL 4
#define CN_STATE_INIT2 5
char cn_initiator;
/* Tells whether THIS DSA or THAT DSA initiated connection */
struct init_activity cn_init_act;
struct exit_activity cn_exit_act;
time_t cn_last_used;
/* Time at which this connection was last used */
char cn_dsa;
/* TRUE for DSA, false for DUA */
/* This will in future imply DSP/DAP */
DN cn_who;
/* Who is producing this operation */
DN cn_what;
/* What is at the remote end */
struct PSAPaddr cn_addr;
/* Where the remote end is */
int cn_ad;
/* handle on the association */
int cn_context_id;
/* Context identifier of context to be used for */
/* user-data over this connection. */
int cn_op_id;
/* used to ensure unique invoke id's */
struct activity *cn_tasklist;
/* list of tasks to be performed */
struct activity *cn_operlist;
/* list of pending operations */
struct connection *cn_next;
/* rest of list of connections */
} *Conn;
#define NULLCONN ((Conn) 0)
/*
* DSAstate is used to represent the full state of the DSA, it keeps track
* of the open connections (and their descriptors), the ISODE info for this
* DSA and a list of the open connections.
*/
typedef
struct quipu_dsa_state
{
struct quipu_dsa_info info; /* Info for THIS DSA */
fd_set iads; /* ad's with open associations */
fd_set wads; /* ad's with AsynAssoc calls out */
int nads; /* Width of descriptors used */
struct connection *connlist; /* Connection blocks */
} *DSAstate;
extern struct quipu_dsa_state id_st; /* Internal Directory State */
#endif