Subject: Re: ICI Software update Date: Wed, 02 Jan 2002 08:10:20 -0800 From: Neil Nelson Organization: www.AIMetaSearch.com To: CyberLegend aka Jure Sah CC: "Harold P. Boushell" Dear Jure Sah, I believe I have the IC SA ready enough for you to begin using. There is a little file transfer debug left but the time sync and send command appear to be working. And I realized yesterday it would not take much to add a basic name vs. IP table for dynamic IP management. The following describes the configuration and communication files for your review so that you can make any changes before I send you the program. Configuration File -------------- min_cycle_time = 1000 /* File and socket command read cycle will not be less than 100 ms. icsa_comm_dir = C:\Programs\ICI\tcp\icic /* Local communications directory. ici_server_ip = 192.168.0.3 /* 66.51.195.107 First ici server ip number. Enter up to 5. ici_home_ip = 192.168.0.2 local_server_port = 10101 /* Port number for local server activity. The above is copied directly from my working config file. The paramter name at the beginning of the line or at the left may consist of any string of characters not including spaces. Upper case may be used but all symbols in the name are changed to lower case for program use. The equal sign is not required such that the first parameter and value may be entered as 'min_cycle_time 1000'. The `/*' string means that everything from that symbol pair with a preceeding space, ` /*', and to the end of the line will be discarded as being a comment. - min_cycle_time is the minimum number of milliseconds taken to: (1) accept any new sockets, (2) cycle through the open sockets, (3) the (soon to be any) local communication file(s), (4) perform the processing requested in those sockets and files, and later (5) cycle through any open named pipes. This parameter is set to provide a trade off between cpu usage and ICSA response speed. New socket requests via the Internet on Linux will interrupt the any (Sleep) period used to fill out the min_cycle_time and will be processed immediately. Currently on Windows no interrupt occurs, but that could be changed to allow a somewhat fast interrupt ability if a faster response was required. But that would also eat up more CPU. - icsa_comm_dir is the directory where local communication files are obtained and placed. The string may terminate with or without a `\'. The file name used as input to the ICSA is currently fixed as icsa.cmm Later any number of files beginning with `icsa' will be detected and processed. File names used for output or local replies are currently named, e.g., as ici_icsa That file should be be deleted by the receiving program (ICI in the example) after it is read. We will need to discuss how multiple files with different ending characters (numbers?) can be written and detected when a prior file has not yet been processed by the other (ICI) program. Currently the file with that name is overwritten if it exists, which means that it may not yet have been processed. I have looked into the Windows and Linux code that would be required for the ICSA to handle files that stack up when not processed quickly enough but that may not be required initially and should be discussed before implementation. - ici_server_ip will currently be the AIMetaSearch IP 66.51.195.107 where the current ICI time (time sync) and the dynamic IPs are obtained. The number there now is my internal IP for that box. - ici_home_ip will likely not be used for dynamic IPs since that IP will change. I need to add the code to capture the IP at the server on the initial time-sync request and send it back, or capture it with the local ICSA. I will look at that today. - local_server_port is the port number of the local server routines. Currently all ICI programs should be using the same server port number. This takes care of the config file. I will send a following email on the communications file. Regards, Neil Nelson