[ 
https://issues.apache.org/jira/browse/DIRMINA-647?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Julien Vermillard resolved DIRMINA-647.
---------------------------------------

    Resolution: Fixed

Fixed, thanks !

> WriteFuture.isWritten() never returns true even when data is actually sent on 
> the serial port using serial transport
> --------------------------------------------------------------------------------------------------------------------
>
>                 Key: DIRMINA-647
>                 URL: https://issues.apache.org/jira/browse/DIRMINA-647
>             Project: MINA
>          Issue Type: Bug
>          Components: Transport
>    Affects Versions: 2.0.0-M3
>         Environment: MINA : 2.0.0-M3
> Netbeans 6.5
> Serial port (both hardware COM1 and using com0com's virtual serial ports)
> JDK 1.6.10
> Windows XP (Service Pack 3) 
>            Reporter: Akbar Munir Chaudhary
>            Assignee: Julien Vermillard
>
> The serial transport never sets the WriteFuture.isWritten() to true, even 
> when the data has been written on the serial port. The 
> WriteFuture.awaitUninterruptibly() without any timeout never returns and if 
> WriteFuture.awaitUninterruptibly() is used with a timeout, then it returns 
> but specifies the WriteFuture.isWritten() as false.
> The following code is the basic usage of serial transport:
> -----------------------------------------------------------------------
> SerialAddress a = new SerialAddress("COM1", 115200, 
> SerialAddress.DataBits.DATABITS_8, SerialAddress.StopBits.BITS_1, 
> SerialAddress.Parity.NONE, SerialAddress.FlowControl.NONE);
> IoConnector c = new SerialConnector();
> c.setHandler(this);
> ConnectFuture cf = c.connect(a);
> cf.awaitUninterruptibly();
> System.out.println("Connection = " + cf.isConnected());
> if (cf.isConnected())
> {
> IoSession s = cf.getSession();
> IoBuffer b = IoBuffer.allocate(32);
> b.put(new String("this is a test message").getBytes());
> b.flip();
> WriteFuture wf = s.write(b);
> wf.awaitUninterruptibly(5, TimeUnit.SECONDS);
> System.out.println("Message Written = " + wf.isWritten());
> }
> -----------------------------------------------------------------------
> Using a cross serial cable, the serial data does reach the other end, but the 
> WriteFuture does not say so. I think the problem may be with the file 
> SerialSessionImpl.java after the line 185. After the buffer data has been 
> written to the serial port's output stream and the buffer position has been 
> adjusted, the WriteFuture in the write request is not notified. If I add the 
> line:
> -----------------------------------------------------------------------
> req.getFuture().setWritten();
> -----------------------------------------------------------------------
> right after the line # 185, it starts to work for all my examples.
> Thanks,
> Akbar.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to