/************************************************************************/ 
/* SISCO SOFTWARE MODULE HEADER *****************************************/ 
/************************************************************************/ 
/*   (c) Copyright Systems Integration Specialists Company, Inc.,	*/ 
/*      	  1986 - 1997, All Rights Reserved.		        */ 
/*									*/ 
/* MODULE NAME : mms_pfil.h						*/ 
/* PRODUCT(S)  : MMSEASE, MMSEASE-LITE					*/ 
/*									*/ 
/* MODULE DESCRIPTION : 						*/ 
/*	This file has the data structures and function definitions	*/ 
/*	required to interface with MMS file services at the primitive	*/ 
/*	level.								*/ 
/*									*/ 
/*	Parameters : In general, the first parameter is the channel	*/ 
/*		     that the request or response is to be sent over.	*/ 
/*		     For Responses, the second parameter is the Invoke	*/ 
/*		     ID to be used. The last parameter is used to pass	*/ 
/*		     operation specific information by pointer. 	*/ 
/*									*/ 
/*	Return								*/ 
/*	    Values : Request functions return a pointer to the pending	*/ 
/*		     request tracking structure, of type MMSREQ_PEND.	*/ 
/*		     In case of error, the pointer is returned == 0	*/ 
/*		     and mms_op_err is written with the err code.	*/ 
/*		     Response functions return 0 if OK, else an error	*/ 
/*		     code.						*/ 
/*									*/ 
/* MODIFICATION LOG :							*/ 
/*  Date     Who   Rev			Comments			*/ 
/* --------  ---  ------   -------------------------------------------	*/ 
/* 08/14/97  RKR     01    Format changes				*/ 
/* 04/02/97  DTL   7.00    MMSEASE 7.0 release. See MODL70.DOC for	*/ 
/*			   history.					*/ 
/************************************************************************/ 
 
#ifndef MMS_PFIL_INCLUDED 
#define MMS_PFIL_INCLUDED 
 
#ifdef __cplusplus 
extern "C" { 
#endif 
 
#include "mms_mp.h" 
 
/************************************************************************/ 
/************************************************************************/ 
/* FILE MANAGEMENT SERVICES						*/ 
/************************************************************************/ 
/* The structures below are used to pass FILE MANAGEMENT information	*/ 
/* to/from the MMS primitives.						*/ 
/************************************************************************/ 
 
#define MFSTAT_NO_ACT     0 
#define MFSTAT_PEND_OPEN  1 
#define MFSTAT_OPENED	  2 
#define MFSTAT_PEND_CLOSE 3 
 
/************************************************************************/ 
/* OBTAIN FILE, Conformance: FIL1					*/ 
/************************************************************************/ 
 
/* REQUEST :								*/ 
 
struct obtfile_req_info 
  { 
  ST_BOOLEAN ar_title_pres; 		/* application title present	*/ 
  ST_INT     ar_len; 			/* length of app proc title	*/ 
  ST_UCHAR   *ar_title;			/* application process title	*/ 
  ST_INT     num_of_src_fname;		/* num of source fname elements	*/ 
  ST_INT     num_of_dest_fname; 	/* num of dest. fname elements	*/ 
/*					   list of source file names 	*/ 
/*  FILE_NAME src_fname_list[ num_of_src_fname ];			*/ 
/*					   list of dest. file names	*/ 
/*  FILE_NAME dest_fname_list[ num_of_dest_fname ];			*/ 
  SD_END_STRUCT 
  }; 
typedef struct obtfile_req_info	OBTFILE_REQ_INFO; 
 
/* RESPONSE : NULL							*/ 
 
#ifndef MMS_LITE 
MMSREQ_PEND *mp_obtfile (ST_INT chan, OBTFILE_REQ_INFO *info); 
ST_RET mp_obtfile_resp (MMSREQ_IND *ind); 
#else 
ST_RET mpl_obtfile (OBTFILE_REQ_INFO *info); 
ST_RET mpl_obtfile_resp (ST_UINT32 invoke); 
#endif 
 
/************************************************************************/ 
/* FILE OPEN, Conformance: FIL2 					*/ 
/************************************************************************/ 
 
/* REQUEST :								*/ 
 
struct fopen_req_info 
  { 
  ST_INT    num_of_fname; 		/* num of fname elements	*/ 
  ST_UINT32 init_pos;			/* initial position		*/ 
/*					   list of file names		*/ 
/*  FILE_NAME fname_list[ num_of_fname ];				*/ 
  SD_END_STRUCT 
  }; 
typedef struct fopen_req_info FOPEN_REQ_INFO; 
 
/* RESPONSE :								*/ 
 
struct file_attr 
  { 
  ST_UINT32  fsize;			/* file size (# bytes)		*/ 
  ST_BOOLEAN mtimpres;			/* last modified time present	*/ 
  time_t     mtime; 			/* last modified time		*/ 
  }; 
typedef struct file_attr FILE_ATTR; 
 
struct fopen_resp_info 
  { 
  ST_INT32  frsmid; 			/* file read state machine ID	*/ 
  FILE_ATTR ent; 		/* file attributes		*/ 
  }; 
typedef struct fopen_resp_info FOPEN_RESP_INFO; 
 
#ifndef MMS_LITE 
MMSREQ_PEND *mp_fopen (ST_INT chan, FOPEN_REQ_INFO *info); 
ST_RET mp_fopen_resp (MMSREQ_IND *ind, FOPEN_RESP_INFO *info); 
#else 
ST_RET mpl_fopen (FOPEN_REQ_INFO *info); 
ST_RET mpl_fopen_resp (ST_UINT32 invoke, FOPEN_RESP_INFO *info); 
#endif 
 
/************************************************************************/ 
/* FILE READ, Conformance: FIL2 					*/ 
/************************************************************************/ 
 
/* REQUEST :								*/ 
 
struct fread_req_info 
  { 
  ST_INT32   frsmid; 			/* file read state maching ID	*/ 
  }; 
typedef struct fread_req_info FREAD_REQ_INFO; 
 
/* RESPONSE :								*/ 
 
struct fread_resp_info 
  { 
  ST_INT     fd_len; 			/* length of file data octets	*/ 
  ST_UCHAR   *filedata;			/* pointer to file data octets	*/ 
  ST_BOOLEAN more_follows; 		/* additional file content	*/ 
					/*   default: SD_TRUE		*/ 
  SD_END_STRUCT 
  }; 
typedef struct fread_resp_info FREAD_RESP_INFO; 
 
#ifndef MMS_LITE 
MMSREQ_PEND *mp_fread (ST_INT chan,FREAD_REQ_INFO *info); 
ST_RET mp_fread_resp (MMSREQ_IND *ind, FREAD_RESP_INFO *info); 
#else 
ST_RET mpl_fread (FREAD_REQ_INFO *info); 
ST_RET mpl_fread_resp (ST_UINT32 invoke, FREAD_RESP_INFO *info); 
#endif 
 
/************************************************************************/ 
/* FILE CLOSE, Conformance: FIL2					*/ 
/************************************************************************/ 
 
/* REQUEST  :								*/ 
 
struct fclose_req_info 
  { 
  ST_INT32   frsmid; 			/* file read state maching ID	*/ 
  }; 
typedef struct fclose_req_info FCLOSE_REQ_INFO; 
 
/* RESPONSE : NULL							*/ 
 
#ifndef MMS_LITE 
MMSREQ_PEND *mp_fclose (ST_INT chan, FCLOSE_REQ_INFO *info); 
ST_RET mp_fclose_resp (MMSREQ_IND *ind); 
#else 
ST_RET mpl_fclose (FCLOSE_REQ_INFO *info); 
ST_RET mpl_fclose_resp (ST_UINT32 invoke); 
#endif 
 
/************************************************************************/ 
/* FILE RENAME, Conformance: FIL3					*/ 
/************************************************************************/ 
 
/* REQUEST :								*/ 
 
struct frename_req_info 
  { 
  ST_INT num_of_cur_fname;		/* num of current fname elements*/ 
  ST_INT num_of_new_fname; 	   	/* num of new fname elements	*/ 
/*					   list of current file names 	*/ 
/*  FILE_NAME cur_fname_list[ num_of_cur_fname ];			*/ 
/*					   list of new file names	*/ 
/*  FILE_NAME new_fname_list[ num_of_new_fname ];			*/ 
  SD_END_STRUCT 
  }; 
typedef struct frename_req_info	FRENAME_REQ_INFO; 
 
/* RESPONSE :  NULL							*/ 
 
#ifndef MMS_LITE 
MMSREQ_PEND *mp_frename (ST_INT chan, FRENAME_REQ_INFO *info); 
ST_RET mp_frename_resp (MMSREQ_IND *ind); 
#else 
ST_RET mpl_frename (FRENAME_REQ_INFO *info); 
ST_RET mpl_frename_resp (ST_UINT32 invoke); 
#endif 
 
/************************************************************************/ 
/* FILE DELETE, Conformance: FIL3					*/ 
/************************************************************************/ 
 
/* REQUEST  :								*/ 
 
struct fdelete_req_info 
  { 
  ST_INT num_of_fname; 			/* num of fname elements	*/ 
/*					   list of file names		*/ 
/*  FILE_NAME fname_list[ num_of_fname ];				*/ 
  SD_END_STRUCT 
  }; 
typedef struct fdelete_req_info	FDELETE_REQ_INFO; 
 
/* RESPONSE :  NULL							*/ 
 
#ifndef MMS_LITE 
MMSREQ_PEND *mp_fdelete (ST_INT chan, FDELETE_REQ_INFO *info); 
ST_RET mp_fdelete_resp (MMSREQ_IND *info); 
#else 
ST_RET mpl_fdelete (FDELETE_REQ_INFO *info); 
ST_RET mpl_fdelete_resp (ST_UINT32 invoke); 
#endif 
 
/************************************************************************/ 
/* FILE DIRECTORY, Conformance: FIL3					*/ 
/************************************************************************/ 
 
/* REQUEST :								*/ 
 
struct fdir_req_info 
  { 
  ST_BOOLEAN filespec_pres; 		/* file specification present	*/ 
  ST_BOOLEAN cont_after_pres;		/* continue after name present	*/ 
  ST_INT     num_of_fs_fname;		/* num of fname elements        */ 
  ST_INT     num_of_ca_fname; 	   	/* num of cont after elements	*/ 
/*					   list of current file names 	*/ 
/*  FILE_NAME fs_fname_list[ num_of_fs_fname ];				*/ 
/*					   list of new file names	*/ 
/*  FILE_NAME ca_fname_list[ num_of_ca_fname ];				*/ 
  SD_END_STRUCT 
  }; 
typedef struct fdir_req_info FDIR_REQ_INFO; 
 
/* RESPONSE :								*/ 
 
struct fdir_dir_ent 
  { 
  ST_UINT32  fsize; 			/* file size (# bytes)		*/ 
  ST_BOOLEAN mtimpres;			/* last modified time present	*/ 
  time_t     mtime; 			/* last modified time		*/ 
  ST_INT     num_of_fname; 		/* num of fname elements	*/ 
/*					   list of file names		*/ 
/*  FILE_NAME fname_list[ num_of_fname ];				*/ 
  SD_END_STRUCT 
  }; 
typedef struct fdir_dir_ent FDIR_DIR_ENT; 
 
struct fdir_resp_info 
  { 
  ST_INT     num_dir_ent;		/* number of directory entries	*/ 
  ST_BOOLEAN more_follows;		/* more dir entries follow	*/ 
					/*   default: SD_FALSE		*/ 
/*					   list of directory entries	*/ 
/*  FDIR_DIR_ENT  dir_ent_list [num_dir_ent]				*/ 
  SD_END_STRUCT 
  }; 
typedef struct fdir_resp_info FDIR_RESP_INFO; 
 
#ifndef MMS_LITE 
MMSREQ_PEND *mp_fdir (ST_INT chan,FDIR_REQ_INFO *info); 
ST_RET mp_fdir_resp (MMSREQ_IND *ind, FDIR_RESP_INFO *info); 
#else 
ST_RET mpl_fdir (FDIR_REQ_INFO *info); 
ST_RET mpl_fdir_resp (ST_UINT32 invoke, FDIR_RESP_INFO *info); 
#endif 
 
#ifdef __cplusplus 
} 
#endif 
 
#endif	/* #define MMS_PFIL_INCLUDED */
