001    /*
002     * Created on 19-Apr-2004
003     */
004    package ca.uhn.hl7v2.protocol.impl;
005    
006    import java.io.IOException;
007    import java.net.Socket;
008    import java.net.SocketAddress;
009    
010    import ca.uhn.hl7v2.protocol.TransportException;
011    
012    /**
013     * A client-side <code>SocketStreamSource</code>.  
014     * 
015     * @author <a href="mailto:bryan.tripp@uhn.on.ca">Bryan Tripp</a>
016     * @version $Revision: 1.1 $ updated on $Date: 2007/02/19 02:24:26 $ by $Author: jamesagnew $
017     */
018    public class ClientSocketStreamSource extends SocketStreamSource {
019    
020        private SocketAddress myAddress;
021        private Socket mySocket;
022    
023        /**
024         * @param theSharedAddress the address at which to connect sockets 
025         * @throws TransportException
026         */
027        public ClientSocketStreamSource(SocketAddress theAddress) throws TransportException {
028            myAddress = theAddress;
029        }
030    
031        /** 
032         * @see ca.uhn.hl7v2.protocol.impl.SocketStreamSource#getSocket()
033         */
034        public Socket getSocket() {
035            return mySocket;
036        }
037    
038        /** 
039         * Gets fresh instances of sockets.  
040         */
041        public void connect() throws TransportException {
042            mySocket = getSocket(myAddress);
043        }
044    
045        private Socket getSocket(SocketAddress theAddress) throws TransportException {
046            Socket s = new Socket();        
047            try {
048                s.connect(theAddress);
049            } catch (IOException e) {
050                throw new TransportException(e);
051            }
052            return s;        
053        }
054    
055    }