Xref: utzoo comp.sys.amiga:17148 comp.sys.amiga.tech:171 Path: utzoo!mnetor!uunet!lll-winken!lll-tis!mordor!sri-spam!ames!ucsd!rutgers!topaz.rutgers.edu!mccarrol From: mccarrol@topaz.rutgers.edu (Mark C. Carroll ) Newsgroups: comp.sys.amiga,comp.sys.amiga.tech Subject: IPC for Protocols in Terminal Emulators Message-ID: Date: 2 Apr 88 18:17:39 GMT Organization: Rutgers Univ., New Brunswick, N.J. Lines: 83 Keywords: IPC remote protocol FTP Proposal: Standard IPC protocol for Remote File Transfer Protocols Author: Mark C. Carroll Date: April 2, 1988 Address: mccarrol@topaz.rutgers.edu ( {backbone}!rutgers!topaz!mccarrol ) carroll@aim.rutgers.edu Snail: Mark C. Carroll 674 Cedarbrook Rd Bridgewater, NJ 08807 ------------------------------------------------------------------------ The following is my proposal for some standard mechanism for external file transfer protocols for terminal programs. Although this may end up being incompatible with whatever IPC system we finally agree on, some method of external protocols is needed now, and the IPC debate shows no signs of coming to any consensus quickly. Since several people are already working on putting external protocols into terminals, I think we need some sort of system NOW. This is my attempt. Flame it if you must. But constructive suggestions are better. ------------------------------------------------------------------------ The method that I propose is a direct extension of Execs message passing system. It will use standard Exec message ports, and an extension of the Exec message structure: struct RFTP_Data { struct Node *RFTP_List; long data_len; char *data; }; struct RFTP_Message { struct Message rftp_msg; long rftp_type,rftp_len; struct List rftp_data; }; In this structure, the rftp_type field is one of: RFTP_RECFILE - recieve file command. A list of filenames is in the Data field. RFTP_SENDFILE - send file command. A list of filenames is in the Data field. RFTP_DATA - character data. Data field is string of data being recieved/transmitted. RFTP_MESSAGE - message to be displayed to the user. Data field is the actual message to display. RFTP_ERR_TIMEOUT - timeout error. Data field is empty. RFTP_ERR_MIST - other error. Data field is error message to be displayed. The rftp_len field is the length of the Data field. The rftp_data field is the string of data. In a message from the terminal to the RFTP process, this data would be the incoming data from the remote system. In a message from the RFTP process to the terminal, this would be either characters to transmit (RFTP_DATA), or a message to the user (RFTP_MESSAGE, RFTP_ERR*). The rftp field is a list. This list should only have more than one member on RFTP_RECFILE and RFTP_SENDFILE. The terminal program would be responsible for somehow obtaining the name of the message port owned by the RFTP process. ( Term uses a line in it's startup file like "RFTP {Zmodem}{Zmit}{Zport}" to define an additional protocol named Zmodem, which can be loaded with the command Zmit, and whose message port is named Zport.) -------------------------------------------------------------- Well, there it is. Please distribute it, and send suggestions, comments, flames, or praise to me at any of the addresses in the header. -- =Mark C. Carroll,Rutgers CS Student| We try to keep ourselves detatched mail to: ARPA: CARROLL@AIM.RUTGERS.EDU | It's clear who holds the key UUCP: mccarrol@topaz.rutgers.edu | Drifting though the age of reason (backbone)!rutgers!topaz!mccarrol | Now your washed up on the shore -GTR