package code.google.nfs.rpc.grizzly.client; /** * nfs-rpc * Apache License * * http://code.google.com/p/nfs-rpc (c) 2011 */ import java.io.IOException; import org.glassfish.grizzly.filterchain.BaseFilter; import org.glassfish.grizzly.filterchain.FilterChainContext; import org.glassfish.grizzly.filterchain.NextAction; import code.google.nfs.rpc.ResponseWrapper; import code.google.nfs.rpc.client.Client; import java.util.List; /** * Grizzly Client Handler * * @author <a href="mailto:bluedavy@gmail.com">bluedavy</a> */ public class GrizzlyClientHandler extends BaseFilter { private Client client; public void setClient(Client client) { this.client = client; } public NextAction handleRead(FilterChainContext ctx) throws IOException { final Object message = ctx.getMessage(); IllegalStateException error = null; try { if (message instanceof List) { @SuppressWarnings("unchecked") List<ResponseWrapper> responses = (List<ResponseWrapper>) message; client.putResponses(responses); } else if (message instanceof ResponseWrapper) { ResponseWrapper response = (ResponseWrapper) message; client.putResponse(response); } else { error = new IllegalStateException("receive message error,only support List || ResponseWrapper"); } } catch (Exception e) { error = new IllegalStateException(e); } if (error != null) { throw error; } return ctx.getStopAction(); } }