1 /* 2 * Created on 15-Apr-2004 3 */ 4 package ca.uhn.hl7v2.protocol; 5 6 import java.util.Map; 7 8 /** 9 * Encapsulates the transport layer of a connection to another 10 * HL7 server. This is the layer responsible for sending and receiving 11 * message strings. The underlying protocol used is implementation 12 * dependent, that is there may be transport layers that are implemented 13 * over email, or JMS, or HTTP. 14 * 15 * @author <a href="mailto:bryan.tripp@uhn.on.ca">Bryan Tripp</a> 16 * @version $Revision: 1.1 $ updated on $Date: 2007-02-19 02:24:38 $ by $Author: jamesagnew $ 17 */ 18 public interface TransportLayer { 19 20 /** 21 * Sends a message to a remote HL7 service. 22 * 23 * @param theMessage the message to send 24 * @throws TransportException 25 */ 26 void send(Transportable theMessage) throws TransportException; 27 28 /** 29 * Gets the next message from the remote system. This call blocks until 30 * the next message is available. 31 * 32 * @return the next available message 33 * @throws TransportException 34 */ 35 Transportable receive() throws TransportException; 36 37 /** 38 * @return metadata to be added to the metadata of all incoming messages. 39 * This provides a way of associating connection information with 40 * incoming messages (eg the IP address of the remote server). 41 */ 42 Map<String, Object> getCommonMetadata(); 43 44 /** 45 * Initializes a connection to the remote server. This can be called after 46 * an exception is encountered, to refresh a dead connection. 47 * @throws TransportException 48 */ 49 void connect() throws TransportException; 50 51 /** 52 * @return true if connect() has completed successfully. Note that true 53 * may be returned even if a connection is dead (ie the implementation need 54 * not test a connection during this call) but should return false if connect() 55 * has not been called, or if connect() has been called and is pending. 56 */ 57 boolean isConnected(); 58 59 /** 60 * Drops any existing connection to the remote server. 61 * @throws TransportException 62 */ 63 void disconnect() throws TransportException; 64 65 }