Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
  * JBoss, Home of Professional Open Source
  * Copyright 2005, JBoss Inc., and individual contributors as indicated
  * by the @authors tag. See the copyright.txt in the distribution for a
  * full listing of individual contributors.
  *
  * This is free software; you can redistribute it and/or modify it
  * under the terms of the GNU Lesser General Public License as
  * published by the Free Software Foundation; either version 2.1 of
 * the License, or (at your option) any later version.
 *
 * This software is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this software; if not, write to the Free
 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
 * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
 */
 
 package org.jboss.remoting.transport.socket;
 
 import java.util.Map;
 import  org.jboss.logging.Logger;

Author(s):
Tom Elrod
 
 public class ClientSocketWrapper extends SocketWrapper implements OpenConnectionChecker
 {
    // Constants ------------------------------------------------------------------------------------
 
    private static final Logger log = Logger.getLogger(ClientSocketWrapper.class);
 
    // Static ---------------------------------------------------------------------------------------
 
    private static boolean trace = .isTraceEnabled();
 
    // Attributes -----------------------------------------------------------------------------------
 
    private InputStream in;
    private OutputStream out;
    private int writeTimeout = -1;
 
    // Constructors ---------------------------------------------------------------------------------
 
    public ClientSocketWrapper(Socket socketthrows IOException
    {
       super(socket);
       createStreams(socketnull);
    }
 
    public ClientSocketWrapper(Socket socketMap metadataInteger timeoutthrows Exception
    {
       super(sockettimeout);
       createStreams(socketmetadata);
    }
 
    // SocketWrapper overrides ----------------------------------------------------------------------
 
    public OutputStream getOutputStream()
    {
       return ;
    }
 
    public InputStream getInputStream()
    {
       return ;
    }
 
    public int getWriteTimeout()
    {
       return ;
    }
 
    public void setWriteTimeout(int writeTimeout)
    {
       this. = writeTimeout;
    }
 
    public void checkConnection() throws IOException
    {
       // Test to see if socket is alive by send ACK message
       final byte ACK = 1;
       
 //      out.reset();
 //      out.writeByte(ACK);
 //      out.flush();
//      in.readByte();
      .write(ACK);
      .flush();
      int i = .read();
      
      if (i != ACK)
      {
         throw new IOException("got " + i + " instead of " + ACK);
      }
      
      if () { .trace(this + " got " + i + " while checking connection"); }
   }
   
   // OpenConnectionChecker implementation ---------------------------------------------------------
   
   public void checkOpenConnection() throws IOException
   {
      if (.trace("checking open connection");
      if (.available() > 1)
      {
         .trace("remote endpoint has closed");
         throw new IOException("remote endpoint has closed");
      }
   }
   // Public ---------------------------------------------------------------------------------------
   public String toString()
   {
      Socket socket = getSocket();
      return "ClientSocketWrapper[" + socket + "." +
         Integer.toHexString(System.identityHashCode(socket)) + "]";
   }
   // Package protected ----------------------------------------------------------------------------
   // Protected ------------------------------------------------------------------------------------
   protected void createStreams(Socket socketMap metadatathrows IOException
   {
      String serializationType = "java"// hardcoding to default to java serialization
      if(metadata != null)
      {
         String serializationTypeParam = (Stringmetadata.get(.);
         if(serializationTypeParam == null || serializationTypeParam.length() == 0)
         {
            serializationTypeParam = (Stringmetadata.get(.);
         }
         if(serializationTypeParam != null && serializationTypeParam.length() > 0)
         {
            serializationType = serializationTypeParam;
         }
      }
      Marshaller marshaller = null;
      UnMarshaller unmarshaller = null;
      int tempTimeout = -1;
      int savedTimeout = getTimeout();
      
      if (metadata != null)
      {
         marshaller = (Marshallermetadata.get();
         unmarshaller = (UnMarshallermetadata.get();
         Object o = metadata.get();
         if (o instanceof Integer)
         {
            tempTimeout = ((Integero).intValue();
            if (tempTimeout != -1)
            {
               socket.setSoTimeout(tempTimeout);
               .trace("set temp timeout to: " + tempTimeout);
            }
         }
         o = metadata.get();
         if (o instanceof Integer)
         {
             = ((Integero).intValue();
            if ( != -1)
            {
               .trace("set writeTimeout to: " + );
            }
         }
      }
      
       = createOutputStream(serializationTypesocketmarshaller);
       = createInputStream(serializationTypesocketunmarshaller);
      setTimeout(savedTimeout);
      .trace("reset timeout: " + savedTimeout);
   }
   protected InputStream createInputStream(String serializationTypeSocket socketUnMarshaller unmarshaller)
         throws IOException
   {
      if () { .trace(this + " getting input stream from " + socket + ", " + unmarshaller); }
      
      if (unmarshaller == null)
         .warn("got null unmarshaller");
      
      InputStream is = socket.getInputStream();
      if (unmarshaller instanceof PreferredStreamUnMarshaller)
      {
         PreferredStreamUnMarshaller psum = (PreferredStreamUnMarshallerunmarshaller;
         is = psum.getMarshallingStream(is);
      }
      
      return is;
   }
   protected OutputStream createOutputStream(String serializationTypeSocket socketMarshaller marshaller)
         throws IOException
   {
      if () { .trace(this + " getting output stream from " + socket + ", " + marshaller); }
      
      
      if (marshaller == null)
         .warn("got null marshaller");
      
      OutputStream os = socket.getOutputStream();
      if ( > 0)
      {
         os = new TimedOutputStream(os);
         if (.trace(this + " created TimedOutputStream: " + os);
      }
      
      if (marshaller instanceof PreferredStreamMarshaller)
      {
         PreferredStreamMarshaller psm = (PreferredStreamMarshallermarshaller;
         os = psm.getMarshallingStream(os);
      }
      
      return os;
   }
   // Private --------------------------------------------------------------------------------------
   // Inner classes --------------------------------------------------------------------------------
New to GrepCode? Check out our FAQ X