users@grizzly.java.net

Re: unable to create a grizzly client using ProtocolChain

From: Survivant 00 <survivant00_at_gmail.com>
Date: Mon, 5 Jan 2009 19:36:39 -0500

thanks it work.

good work

2009/1/5 Oleksiy Stashok <Oleksiy.Stashok_at_sun.com>

> Hi Sebastien,
> it should be fixed on trunk [1]
>
> WBR,
> Alexey.
>
>
> [1]
> Author: oleksiys
> Date: 2009-01-05 17:07:45+0000
> New Revision: 2078
>
> Modified:
>
> trunk/modules/grizzly/src/main/java/com/sun/grizzly/DefaultCallbackHandler.java
>
> Log:
> + enable OP_READ interest by default
>
>
> On Jan 5, 2009, at 14:37 , Survivant 00 wrote:
>
> it wasn't called.
>
> I'll send you my demo..
>
> the class GrizzlyClientProtocolChain2.java is using the
> (CallbackHandler)null
>
>
>
>
> 2009/1/5 Oleksiy Stashok <Oleksiy.Stashok_at_sun.com>
>
>> Sebastien, are you sure, that QuoteQueryProtocolFilter is never called on
>> client side? Can you pls. double check this?
>> If no - pls. send me client and server side code - I'll check it.
>>
>> Thank you.
>>
>> WBR,
>> Alexey.
>>
>>
>> On Dec 23, 2008, at 14:56 , Survivant 00 wrote:
>>
>> I'm trying to create a client using ProtocolChain but the client never
>>> received messages from the server.
>>>
>>> and another thing : when I'm using controller.start(); the program block
>>> there, and if I'm using new Thread(controler).start(); it's fine.. (still
>>> not receiving messages from the server)
>>>
>>> here my code
>>>
>>>
>>> package grizzly.client;
>>>
>>> import java.io.IOException;
>>> import java.net.InetSocketAddress;
>>> import java.nio.ByteBuffer;
>>>
>>> import org.slf4j.Logger;
>>> import org.slf4j.LoggerFactory;
>>>
>>> import grizzly.client.filter.QuoteQueryManagerFilter;
>>> import grizzly.client.filter.QuoteQueryProtocolFilter;
>>> import com.sun.grizzly.BaseSelectionKeyHandler;
>>> import com.sun.grizzly.CallbackHandler;
>>> import com.sun.grizzly.Controller;
>>> import com.sun.grizzly.DefaultProtocolChain;
>>> import com.sun.grizzly.ProtocolChain;
>>> import com.sun.grizzly.ProtocolChainInstanceHandler;
>>> import com.sun.grizzly.TCPConnectorHandler;
>>> import com.sun.grizzly.TCPSelectorHandler;
>>> import com.sun.grizzly.util.ByteBufferFactory;
>>>
>>> public class SmallGrizzlyClient {
>>>
>>> private static final Logger s_logger =
>>> LoggerFactory.getLogger(SmallGrizzlyClient.class);
>>>
>>> private TCPConnectorHandler connector_handler;
>>> private Controller controller;
>>> private TCPSelectorHandler tcp_selector_handler;
>>>
>>> private ByteBuffer buf = ByteBufferFactory.allocateView(1000, false);
>>> private ByteBuffer response = ByteBufferFactory.allocateView(1000,
>>> false);
>>>
>>> public void init() {
>>>
>>> controller = new Controller();
>>>
>>> tcp_selector_handler = new TCPSelectorHandler(true);
>>> tcp_selector_handler.setSelectionKeyHandler(new
>>> BaseSelectionKeyHandler());
>>> controller.addSelectorHandler(tcp_selector_handler);
>>>
>>> QuoteQueryProtocolFilter protocolParser = new
>>> QuoteQueryProtocolFilter();
>>> QuoteQueryManagerFilter quoteManagerFilter = new
>>> QuoteQueryManagerFilter();
>>>
>>>
>>> ProtocolChainInstanceHandler pciHandler = new
>>> ProtocolChainInstanceHandler() {
>>>
>>> final ProtocolChain protocolChain = new DefaultProtocolChain();
>>>
>>> public boolean offer(ProtocolChain protocolChain) {
>>> return false;
>>>
>>> }
>>>
>>> public ProtocolChain poll() {
>>>
>>> return protocolChain;
>>> }
>>> };
>>>
>>> controller.setProtocolChainInstanceHandler(pciHandler);
>>>
>>> ProtocolChain protocolChain = pciHandler.poll();
>>> protocolChain.addFilter(protocolParser);
>>> protocolChain.addFilter(quoteManagerFilter);
>>>
>>> //new Thread(controller).start(); // continue fine
>>> try {
>>> controller.start(); // BLOCK HERE
>>> } catch (IOException e) {
>>> // TODO Auto-generated catch block
>>> e.printStackTrace();
>>> }
>>> connector_handler = (TCPConnectorHandler)
>>> controller.acquireConnectorHandler(Controller.Protocol.TCP);
>>> }
>>>
>>> public void connect(String host, int port){
>>> try {
>>> connector_handler.connect(new InetSocketAddress(host, port),
>>> (CallbackHandler)null);
>>>
>>> } catch (Exception e) {
>>> s_logger.error("Exception in execute..." + e);
>>> }
>>> }
>>>
>>> public void send(String quote) throws Exception {
>>> byte[] msg = quote.getBytes();
>>>
>>> buf = ByteBufferFactory.allocateView(msg.length, false);
>>>
>>> buf.put(msg);
>>> buf.flip();
>>> connector_handler.write(buf, true);
>>> buf.clear();
>>>
>>> }
>>>
>>> public void close(){
>>> try {
>>> if(connector_handler!=null){
>>> connector_handler.close();
>>> }
>>> if(controller!=null){
>>> controller.stop();
>>> }
>>> } catch (IOException e) {
>>> s_logger.error("IOException", e);
>>> }
>>> }
>>>
>>> public static void main(String[] args) {
>>> SmallGrizzlyClient client = new SmallGrizzlyClient();
>>>
>>> String host = "localhost";
>>> int port = 7803;
>>>
>>> try {
>>> client.init();
>>> Thread.sleep(300);
>>> client.connect(host, port);
>>>
>>> Thread.sleep(300);
>>> client.send("hello[eoq]");
>>>
>>> Thread.sleep(5000);
>>>
>>> client.close();
>>>
>>> Thread.sleep(300);
>>> } catch(Exception e){
>>> s_logger.error("main", e);
>>> } finally {
>>> try {client.close();}catch(Exception e){}
>>> }
>>>
>>> }
>>>
>>> }
>>>
>>>
>>> PS I know that the message sent by the client is receive on the server
>>> and in the server log I see a message sent too. I have a debug log in all
>>> my method in the QuoteQueryProtocolFilter and QuoteQueryProtocolManager
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe_at_grizzly.dev.java.net
>> For additional commands, e-mail: users-help_at_grizzly.dev.java.net
>>
>>
> <GrizzlyClientServerDemo.zip>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe_at_grizzly.dev.java.net
> For additional commands, e-mail: users-help_at_grizzly.dev.java.net
>
>
>