users@grizzly.java.net

Re: writing a client with grizzly...

From: Jeanfrancois Arcand <Jeanfrancois.Arcand_at_Sun.COM>
Date: Thu, 24 Jan 2008 14:32:10 -0500

Thanks for the patch, Erick! Applied and available on the trunk!

-- Jeanfrancois

Jeanfrancois Arcand wrote:
> Hi Erick
>
> Erik Svensson wrote:
>> Howdy all,
>>
>> On 1/22/08 5:10 PM, "Jeanfrancois Arcand" <Jeanfrancois.Arcand_at_Sun.COM>
>> wrote:
>>
>>> Hi,
>>>
>>> Oleksiy Stashok wrote:
>>>> Hello,
>>>>
>>>> if you're registering callbackHandler with ConnectorHandler, it's
>>>> required to call finishConnect on onConnect event. For example:
>>>>
>>>> / public void onConnect(IOEvent<Context> ioEvent) {
>>>> SelectionKey key =
>>>> ioEvent.attachment().getSelectionKey();
>>>> try{
>>>> tcpConnector.finishConnect(key);
>>>> } catch (IOException ex){
>>>> // log
>>>> }
>>>> ioEvent.attachment().getSelectorHandler().register(key,
>>>> SelectionKey.OP_READ);
>>>> }
>>>> /
>>>>
>>> OK I will work on documenting this as this is the second email today
>>> talking about this undocumented operation :-)
>>
>> With Oleksiys help my example worked.
>> I've modified TCPConnectorHandler:connect(SocketAddress remoteAddres,
>> SocketAddress localAddress) to check for a callbackHandler and if one
>> isn't
>> installed it creates one (identical to the one created if controller ==
>> null). This makes TCPConnectorHandler a bit easier to use for the the
>> most
>> common case.
>
> Agree. Can you send the diff -u :-) We gonna add it to the trunk.
>
> Thanks!
>
> -- Jeanfrancois
>
>
>>
>>
>> cheers
>>
>> Erik Svensson, SIX AB
>>
>>> A+
>>>
>>> -- Jeanfrancois
>>>
>>>
>>>> Thanks.
>>>>
>>>> WBR,
>>>> Alexey.
>>>>
>>>> Erik Svensson wrote:
>>>>> Hwody all!
>>>>>
>>>>> We're newcomers to grizzly, looking to use grizzly as a comm backbone
>>>>> for a
>>>>> near-realtime information flow system for the financial industry.
>>>>> I've created a simple server without a problem and now I'm looking at
>>>>> writing a client using grizzly and here I run into some snags.
>>>>> I've been looking at
>>>>> http://blogs.sun.com/oleksiys/resource/ssl-client/GrizzlySSLNIOClient.java
>>>>>
>>>>>
>>>>> as an exampel but I can't get it to work.
>>>>> The code:
>>>>>
>>>>> <snip>
>>>>> private TCPConnectorHandler connector_handler;
>>>>> private Controller controller;
>>>>> private TCPSelectorHandler tcp_selector_handler;
>>>>>
>>>>> private ByteBuffer buf = ByteBuffer.allocate(100);
>>>>>
>>>>> controller = new Controller();
>>>>> tcp_selector_handler = new TCPSelectorHandler(true); // true to
>>>>> get
>>>>> client
>>>>> controller.addSelectorHandler(tcp_selector_handler);
>>>>>
>>>>> controller.addStateListener(new ControllerStateListenerAdapter() {
>>>>>
>>>>> public void onReady() {
>>>>> System.out.println("Ready!");
>>>>> }
>>>>>
>>>>> public void onStarted() {
>>>>> System.out.println("Controller started!");
>>>>> }
>>>>>
>>>>> });
>>>>>
>>>>> new Thread(controller).start();
>>>>> synchronized(this) {
>>>>> try {
>>>>> wait(30000);
>>>>> } catch(Exception e) {
>>>>> System.out.println("Timeout in wait"+e.getMessage());
>>>>> }
>>>>> }
>>>>>
>>>>> connector_handler =(TCPConnectorHandler)
>>>>> controller.acquireConnectorHandler(Controller.Protocol.TCP);
>>>>> connector_handler.setController(controller);
>>>>>
>>>>> System.out.println("Thread is started.?
>>>>> "+(controller.isStarted() ?
>>>>> "Yes" : "No"));
>>>>> try {
>>>>> byte[] filler = new byte[92];
>>>>>
>>>>> for (int i = 0; i< filler.length; i++) {
>>>>> filler[i] = 2;
>>>>> }
>>>>>
>>>>> connector_handler.connect(new InetSocketAddress(host,port),
>>>>> new
>>>>> CallbackHandler() {
>>>>> public void onConnect(IOEvent e) {
>>>>> System.out.println("Callbackhandler: OnConnect...");
>>>>> }
>>>>>
>>>>> public void onRead(IOEvent e) {
>>>>> System.out.println("Callbackhandler: OnRead...");
>>>>> }
>>>>>
>>>>> public void onWrite(IOEvent e) {
>>>>> System.out.println("Callbackhandler: OnWrite...");
>>>>> }
>>>>>
>>>>> });
>>>>> int ctr = 0;
>>>>> while (ctr < repeats) {
>>>>> buf.putLong(System.nanoTime());
>>>>> buf.put(filler);
>>>>> buf.flip();
>>>>> connector_handler.write(buf,false);
>>>>> buf.clear();
>>>>> connector_handler.read(buf,true);
>>>>> buf.flip();
>>>>> elapsed += System.nanoTime() - buf.getLong();
>>>>> buf.clear();
>>>>> ctr++;
>>>>> }
>>>>> System.out.println(""+repeats+" run at a total of "+elapsed+"
>>>>> nanoseconds. Per packet it comes down to "+elapsed/repeats+
>>>>> " nanoseconds per roundtrip.");
>>>>> } catch(Exception e) {
>>>>> System.out.println("Exception in execute..."+e);
>>>>> e.printStackTrace(System.out);
>>>>> }
>>>>> }
>>>>>
>>>>> WHen I try to run it I get an
>>>>> java.nio.channels.NotYetConnectedException.
>>>>> I've checked that I can connect to the host. What am I doing wrong?
>>>>>
>>>>> cheers
>>>>>
>>>>> Erik Svensson, SIX AB
>>>>>
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: users-unsubscribe_at_grizzly.dev.java.net
>>>>> For additional commands, e-mail: users-help_at_grizzly.dev.java.net
>>>>>
>>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: users-unsubscribe_at_grizzly.dev.java.net
>>>> For additional commands, e-mail: users-help_at_grizzly.dev.java.net
>>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscribe_at_grizzly.dev.java.net
>>> For additional commands, e-mail: users-help_at_grizzly.dev.java.net
>>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe_at_grizzly.dev.java.net
>> For additional commands, e-mail: users-help_at_grizzly.dev.java.net
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe_at_grizzly.dev.java.net
> For additional commands, e-mail: users-help_at_grizzly.dev.java.net
>