spawn_acl_script_c
status.i4.v = spawn_acl_script_c(file_name.i1a.r, file_type.i4.v,
subst_devices.i1a.r, num_devices.i4.v,
default_ftd.i2.v,
subst_strings.i1pa.r,
num_subst_str.i4.v,
log_file.i1a.r, shared_log.i1a.r
[,node.i4.v] [,acl_options.u4.v]
[,spawn_options.u4.v]
[,spawn_name.i1a.r]
[,message_info.s.r]
[,lock_name.i1a.r]
[,orig_requestor.i1a.r]
[,orig_req_node.i4.v]
[,connect_node.i4.v])
This routine spawns off Accelerator Command Language scripts for
asynchronous execution.
file_name null terminated file name or source code
file_type type of file
(ACL_FLAT_FILE -> ASCII text file,
ACL_DB_FILE -> "file_name" should be the database
table name from ACL_DB_TABLE,
ACL_SOURCE_CODE -> file name is actually ACL
source code)
subst_devices array of substitute device names which replace
device names in the source code of the form "G:DEVnnn"
(dio_get_terse_name_length characters per entry)
(If the option ACL_OPT_SUBST_ARRAY_DEVICES is
selected, there should be C_STYLE_DEVICE_NAME_LEN
characters per entry.)
(A value of NULL can be passed for this argument
if no substitute device names are needed.)
num_devices number of substitute devices
default_ftd default reading FTD for any devices in the code
(constants are in 'diolib')
subst_strings array of null terminated strings which will replace
strings in the source code of the form "STRINGnnn"
num_subst_str number of substitute strings supplied
log_file fully specified name of log file to generate
shared_log shared log file to send messages to
(LOG_NAMLEN characters)
[node] node to execute script on
(default is the local node)
[acl_options] ACL execution options
(ACL_OPT_NONE -> no options selected, parse and
execute the code (default),
ACL_OPT_PARSE_ONLY -> parse, but do not execute code,
ACL_OPT_DELETE_SYMBOLS -> delete all existing ACL
symbols before executing
the code,
ACL_OPT_DONT_CLOSE -> leave database connection
open upon exit (close later
with db_close),
ACL_OPT_NO_STALE -> ignore stale data errors,
ACL_OPT_NO_SETS -> suppress settings,
ACL_OPT_SAVE_SOURCE -> save source code with
compiled code,
ACL_OPT_CLEAR_STATUS -> clear global status symbols,
ACL_OPT_CANCEL_REQUESTS -> cancel data requests,
ACL_OPT_SUBST_ARRAY_DEVICES -> substitute device names
can include array
indices
(C_STYLE_LONG_DEVICE_NAME_LEN
characters per entry),
ACL_OPT_VERBOSE_OUTPUT -> display verbose output)
[spawn_options] spawned execution options
(SPAWN_OPT_NONE -> no options selected (default),
SPAWN_OPT_SEND_STATUS -> send final execution
status to the calling program,
SPAWN_OPT_SEND_CLIENT_MESSAGE -> send a message to
the requestor,
SPAWN_OPT_ARCHIVE_LOG -> archive previous log file)
[spawned_name] returned name of the spawned process
(allow PROCESS_NAME_LEN + 1 characters)
(default is NULL)
[message_info] client message request information
(structure of type SPAWNED_ACL_REMOTE_MESSAGE_INFO)
(default is NULL)
[lock_name] lock to hold while the spawned process is running
(default is NULL)
[orig_requestor] null terminated original requestor process name
(default is NULL)
[orig_req_node] original requestor node
(default is LOCAL)
[connect_node] node that spawned script should connect as
(default is LOCAL)
This function returns ACNET status values as follows:
OK success
CLIB_MEMFAIL failed in allocating dynamic memory
CLIB_NOTOPN failed to open file
CLIB_GENERIC_ERROR error spawning process
CLIB_TOO_BIG file name/source code is too long
otherwise other ACNET format error code
This function requires the following include files:
cbslib_h, cns_data_structs_h, acnet_errors_h
Related functions:
intro_acl, acl_file_execute_c, acl_execute_c, acl_file_read_c,
acl_file_write_c, acl_compile_c, acl_free_c, acl_read_symbol_c,
acl_read_symbol_info_c, acl_read_symbol_names, acl_delete_symbol,
acl_info_c, acl_cancel_requests_c, acl_set_symbol_c,
acl_default_data_source_c, acl_log_file_c, acl_default_script_path_c,
db_close, spawn_shotlog_comment_c, spawn_shotlog_image_entry_c,
spawn_shotlog_insert_url_c, spawn_shotlog_insert_chapter_c,
dio_get_terse_name_length
C/C++ usage:
static const char file_name[] = "my_path:acl_file.acl";
char spawned_name[PROCESS_NAME_LEN+1];
char *subst_devices = (char *) NULL;
char *log_file = (char *) NULL;
char *shared_log = (char *) NULL;
char *lock_name = (char *) NULL;
char *orig_requestor = (char *) NULL;
char **subst_strings = (char **) NULL;
short default_ftd = FTD_ONESHOT;
int status;
int file_type = ACL_FLAT_FILE;
int num_devices = 0;
int num_subst_str = 0;
int node = LOCAL;
int orig_req_node = LOCAL;
int connect_node = LOCAL;
unsigned int acl_options = ACL_OPT_NONE;
unsigned int spawn_options = SPAWN_OPT_NONE;
SPAWNED_ACL_REMOTE_MESSAGE_INFO *message_info = (SPAWNED_ACL_REMOTE_MESSAGE_INFO *) NULL;
status = spawn_acl_script_c(file_name,file_type,subst_devices,
num_devices,default_ftd,
subst_strings,num_subst_str,
log_file,shared_log,node,acl_options,
spawn_options,spawned_name,message_info,
lock_name,orig_requestor,orig_req_node,
connect_node);