All Downloads are FREE. Search and download functionalities are using the official Maven repository.

ca.uhn.hl7v2.protocol.TransportLayer Maven / Gradle / Ivy

/*
 * Created on 15-Apr-2004
 */
package ca.uhn.hl7v2.protocol;

import java.util.Map;

/**
 * Encapsulates the transport layer of a connection to another 
 * HL7 server.  This is the layer responsible for sending and receiving 
 * message strings.  The underlying protocol used is implementation
 * dependent, that is there may be transport layers that are implemented 
 * over email, or JMS, or HTTP.  
 * 
 * @author Bryan Tripp
 * @version $Revision: 1.1 $ updated on $Date: 2007-02-19 02:24:38 $ by $Author: jamesagnew $
 */
public interface TransportLayer {

    /**
     * Sends a message to a remote HL7 service.
     *   
     * @param theMessage the message to send 
     * @throws TransportException
     */
    public void send(Transportable theMessage) throws TransportException;
    
    /**
     * Gets the next message from the remote system.  This call blocks until
     * the next message is available.  
     *  
     * @return the next available message 
     * @throws TransportException
     */
    public Transportable receive() throws TransportException;
    
    /**
     * @return metadata to be added to the metadata of all incoming messages.  
     *      This provides a way of associating connection information with  
     *      incoming messages (eg the IP address of the remote server).
     */
    public Map getCommonMetadata();    
    
    /**
     * Initializes a connection to the remote server.  This can be called after 
     * an exception is encountered, to refresh a dead connection.  
     * @throws TransportException
     */
    public void connect() throws TransportException;
    
    /**
     * @return true if connect() has completed successfully.  Note that true 
     *  may be returned even if a connection is dead (ie the implementation need 
     *  not test a connection during this call) but should return false if connect()
     *  has not been called, or if connect() has been called and is pending.  
     */
    public boolean isConnected();
    
    /**
     * Drops any existing connection to the remote server.  
     * @throws TransportException
     */
    public void disconnect() throws TransportException;
    
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy