Syntax FACTORY_DEF TransporterFactory [FACTORY_NAME ] [INPUT FEATURE_TYPE [ ]* []*]* [MODE (TCP/IP|FILE|STREAM|STREAM_FILE)] [FILE_NAME FEATURES_PER_FILE ] [INITIATION_SEQUENCE (ESTABLISH|CONNECT)] [HOST ] [PORT ] [DIRECTION (SEND|RECEIVE)] [STAYALIVE (Yes|No)] [DELIMIT_METHOD (FIXED|DYNAMIC|CUSTOM)] [BYTES_PER_REQUEST ] [DELIMITER ] [ATTRNAME ] [NUM_BYTES_RECEIVED_ATTR ] [OUTPUT TRANSPORTED FEATURE_TYPE [ ]* []*]* Overview The TransporterFactory is used to send features from one transporter (a sender) to a different transporter (a receiver) that is located in another FME process either on the same or on a different machine. The MODE clause is used to specify how the data is to be transferred. If MODE is set to TCP/IP or not specified, then a tcpip_transporter is created. If it is set to FILE, then a file_transporter is created. A file_transporter saves all the features to a file and then sends the location of the file over the TCP/IP connection, whereas a tcpip_transporter saves all the feature data over the TCP/IP connection. The mode for the sender must match the mode of the receiver. The STREAM option allows for feature data to be streamed directly between transporters, without an intermediate file. The data is sent over a standard TCP/IP connection. The STREAM_FILE mode will only function when both transporters are running on the same machine. The sender will serialize to files in the FME_TEMP directory and send each filename to the receiver, who will read data seamlessly from each file. The receiver will only receive a filename when the sender is finished writing. The sender automatically groups data into each file. In STREAM mode, feature data such as custom coordinate systems will be maintained. However, features that require accessory files in FFS writing will not be maintained, examples would be textures and point clouds. In STREAM_FILE mode, all data will be maintained, although there is a cost penalty to serializing large features such as point clouds and rasters as they must be wholly written to disk in temporary files. If the TransporterFactory has INITIATION_SEQUENCE set to ESTABLISH, then it creates the transport stream and waits for someone else to connect to it. If it is CONNECT, then it attempts to connect to the other end. Once communication is established, then the factory simply sends/receives features to another transporter based on the value of DIRECTION (i.e., SEND or RECEIVE). HOST is only specified for the factory that has a value of CONNECT for its INITIATION_SEQUENCE. PORT can either be a port number that is to be used or can be the name of a SERVICE that will be resolved into a PORT. For example, http, ftp, telnet, imap, gopher, pop3, www, and smtp are services that are typically associated with well-known port numbers. FILE_NAME and FEATURES_PER_FILE are only specified for the factory that has its DIRECTION set to SEND and its MODE set to FILE. The file specified in FILE_NAME must be in a location that the receiver has access to using the same path information. FEATURES_PER_FILE specifies how many features to save to a file before sending the file information; this number must be greater than 0. ATTRNAME is only specified for the TCP/IP_SINGLE_ATTR and TCP/IP_RAW_BYTES modes. For the factory with its DIRECTION set to SEND, this specified attribute will be send to a waiting receiving transporter. If the DIRECTION is set to RECEIVE, then this attribute is used to store the received attribute data. BYTES_PER_REQUEST is only used for transporters in TCP/IP_RAW_BYTES mode. This attribute specifies the maximum number of bytes that the factory will receive before the data is placed into a feature. A value of '-1' will allow the transporter to receive up to 262144 bytes per attribute. NUM_BYTES_RECEIVED_ATTR is only used in TCP/IP_RAW_BYTES mode. This attribute will store the true number of bytes received by the transporter from each request. STAYALIVE specifies if the factoy in TCP/IP_RAW_BYTES mode should only make one connection per translation if set to NO, or if the factory can accept subsequent connections after the initial one has disconnected. This is only available in TCP/IP_RAW_BYTES mode. DELIMIT_METHOD is only used for transporters in TCP/IP_RAW_BYTES mode. This clause specifies the manner in which the underlying transporter will split up received data into segments. Each segment will be output as a feature. If this clause has a value of FIXED, each segment will contain at most BYTES_PER_REQUEST bytes. If it is DYNAMIC, then the transporter will expect to receive the data segment length from the Sender (such as the TCP/IP_RAW_BYTES transporter) as an unsigned 32-bit integer, and will produce one feature per received data size. If this clause has a value of CUSTOM, then the DELIMITER parameter defines the string that will cause the received data to be split into segments DELIMITER is only used for transporters in TCP/IP_RAW_BYTES mode, only if DELIMIT_METHOD is set to CUSTOM. This clause specifies the string that will cause the received data to be split into segments. Note: It is very important that users be careful when specifying which transporter is to establish connections and which is to connect to them. Transporter establishment is impossible if a machine has transporters set as establishers and connectors to the same remote machine. It is important that the establisher process is run before the connector process in order for this to succeed. A transporter cannot successfully connect to a transport stream that is not established. Output Tags The TransporterFactory supports the following output tag. TRANSPORTED If DIRECTION is RECEIVE, then all features received from the sender will be output here. If DIRECTION is SEND, then a copy of each feature sent will be output here.