Linkexpress 利用者プログラム開発ガイド |
目次
索引
![]() ![]() |
付録A サンプル | > A.1 転送APIのサンプル |
このサンプルプログラムは、以下のファイルに格納されています。
PCサーバ : インストールディレクトリ\sample\api\sndfile3.c
UNIXサーバ : インストールディレクトリ/SAMPLE/api/sndfile3.c
このサンプルプログラムは、突き放し型のSNDFILEを使用してファイル転送を連続して行うものです。プログラムの説明を以下に示します。
Linkexpressに対してSNDFILEの要求を連続して行います。突き放し型で要求しているため、GETINFでファイル転送の完了通知を受け取っています。また、GETINFで完了通知を受け取ったため、TRANCOMPでその旨をLinkexpressに通知しています。
ファイル転送を連続して行うため、上記の一連の処理を再度行っています。
sndfile3.cの内容を以下に示します。
/* * * All Rights Reserved Copyright (c) FUJITSU LIMITED 1997-2005 * */ /* * API sample program (init No.3) */ /* * include file */ #include <sys/types.h> #include <string.h> #include <stdio.h> #include <lxapi.h> int main() { unsigned long req_ident; /* * sndfile */ { dts_sndfile_dcb_t input_dcb; dts_inf_transfer_comp_t output_dcb; password_t password; /* * clear parameters */ memset( &input_dcb, 0, sizeof(dts_sndfile_dcb_t) ); memset( &output_dcb, 0, sizeof(dts_inf_transfer_comp_t) ); memset( &password, 0, sizeof(password_t) ); input_dcb.req_ident = 0; input_dcb.req_type = DTS_API_THROW; input_dcb.appl_name = "@_USRAPL"; input_dcb.system_name = "dest_system"; input_dcb.assoc_cont = DTS_API_CONT; input_dcb.local_filename = "C:\\test\\api\\a"; input_dcb.local_user = 0; input_dcb.remote_filename = "C:\\test\\api\\b"; input_dcb.storage_form = DTS_API_REP; input_dcb.access_password = 0; input_dcb.data_type = DTS_API_BINARY; input_dcb.file_attr = 0; input_dcb.speed = 0; input_dcb.ret_tid = 0; input_dcb.protocol_option = 0; input_dcb.user_id = "linkexp"; input_dcb.password = &password; password.password_len = 7; strcpy( password.password, "linkexp" ); input_dcb.group = 0; sndfile( &input_dcb, &output_dcb ); } /* * getinf */ { dts_getinf_dcb_t input_dcb; dts_get_information_t output_dcb; /* * clear parameters */ memset( &input_dcb, 0, sizeof(dts_getinf_dcb_t) ); memset( &output_dcb, 0, sizeof(dts_get_information_t) ); input_dcb.appl_name = "@_USRAPL"; input_dcb.req_kind = DTS_API_INIT; input_dcb.info_kind = DTS_API_END_INFO; input_dcb.timer = 0; input_dcb.path_name = 0; getinf( &input_dcb, &output_dcb ); req_ident = output_dcb.getinf_data.tcomp.req_ident; printf("req_ident =%d\n", req_ident ); printf("system_name =%s\n", output_dcb.getinf_data.tcomp.system_name ); printf("flow_kind =%d\n", output_dcb.getinf_data.tcomp.flow_kind ); printf("start_time =%s", ctime( (time_t *)&output_dcb.getinf_data.tcomp.start_time ) ); printf("comp_time =%s", ctime( (time_t *)&output_dcb.getinf_data.tcomp.comp_time ) ); printf("trn_comptype =%d\n", output_dcb.getinf_data.tcomp.trn_comptype ); printf("data_size =%d\n", output_dcb.getinf_data.tcomp.data_size ); } /* * trancomp */ { dts_trancomp_dcb_t input_dcb; dts_diagnostic_t output_dcb; /* * clear parameters */ memset( &input_dcb, 0, sizeof(dts_trancomp_dcb_t) ); memset( &output_dcb, 0, sizeof(dts_diagnostic_t) ); memset( &password, 0, sizeof(password_t) ); input_dcb.appl_name = "@_USRAPL"; input_dcb.req_ident = req_ident; input_dcb.req_kind = DTS_API_INIT; trancomp( &input_dcb, &output_dcb ); } /* * sndfile */ { dts_sndfile_dcb_t input_dcb; dts_inf_transfer_comp_t output_dcb; password_t password; /* * clear parameters */ memset( &input_dcb, 0, sizeof(dts_sndfile_dcb_t) ); memset( &output_dcb, 0, sizeof(dts_inf_transfer_comp_t) ); input_dcb.req_ident = 0; input_dcb.req_type = DTS_API_THROW; input_dcb.appl_name = "@_USRAPL"; input_dcb.system_name = "dest_system"; input_dcb.assoc_cont = DTS_API_CUT; input_dcb.local_filename = "C:\\test\\api\\a"; input_dcb.local_user = 0; input_dcb.remote_filename = "C:\\test\\api\\b"; input_dcb.storage_form = DTS_API_REP; input_dcb.access_password = 0; input_dcb.data_type = DTS_API_BINARY; input_dcb.file_attr = 0; input_dcb.speed = 0; input_dcb.ret_tid = 0; input_dcb.protocol_option = 0; input_dcb.user_id = "linkexp"; input_dcb.password = &password; password.password_len = 7; strcpy( password.password, "linkexp" ); input_dcb.group = 0; sndfile( &input_dcb, &output_dcb ); } /* * getinf */ { dts_getinf_dcb_t input_dcb; dts_get_information_t output_dcb; /* * clear parameters */ memset( &input_dcb, 0, sizeof(dts_getinf_dcb_t) ); memset( &output_dcb, 0, sizeof(dts_get_information_t) ); input_dcb.appl_name = "@_USRAPL"; input_dcb.req_kind = DTS_API_INIT; input_dcb.info_kind = DTS_API_END_INFO; input_dcb.timer = 0; input_dcb.path_name = 0; getinf( &input_dcb, &output_dcb ); req_ident = output_dcb.getinf_data.tcomp.req_ident; printf("req_ident =%d\n", req_ident ); printf("system_name =%s\n", output_dcb.getinf_data.tcomp.system_name ); printf("flow_kind =%d\n", output_dcb.getinf_data.tcomp.flow_kind ); printf("start_time =%s", ctime( (time_t *)&output_dcb.getinf_data.tcomp.start_time ) ); printf("comp_time =%s", ctime( (time_t *)&output_dcb.getinf_data.tcomp.comp_time ) ); printf("trn_comptype =%d\n", output_dcb.getinf_data.tcomp.trn_comptype ); printf("data_size =%d\n", output_dcb.getinf_data.tcomp.data_size ); } /* * trancomp */ { dts_trancomp_dcb_t input_dcb; dts_diagnostic_t output_dcb; /* * clear parameters */ memset( &input_dcb, 0, sizeof(dts_trancomp_dcb_t) ); memset( &output_dcb, 0, sizeof(dts_diagnostic_t) ); input_dcb.appl_name = "@_USRAPL"; input_dcb.req_ident = req_ident; input_dcb.req_kind = DTS_API_INIT; trancomp( &input_dcb, &output_dcb ); } return( 0 ); }
参照
lxapi.h、dts_sndfile_dcb_t、dts_inf_transfer_comp_t、dts_getinf_dcb_t、dts_get_information_t、dts_trancomp_dcb_t、dts_diagnostic_t
用語解説
目次
索引
![]() ![]() |