On Thu, Jan 7, 2010 at 6:44 PM, Christian Mueller
<[email protected]> wrote:
> Hey Mina users!
>
> I'm a newbie for Apache Mina (2.0.0 RC1). I will build a framework for 
> sending and receiving ucp messages (see 
> http://en.wikipedia.org/wiki/Universal_Computer_Protocol) for sending and 
> receiving short messages. I have done a Client which send/receives ucp 
> messages asynchronous (which was really easy with Apache Mina - thanks! :-) ).
>
> But for convenience, I also will provide the possibility to sends/receives 
> ucp messages synchronous. My first try looks as following:
>
>    public UCPMessage sendSync(UCPMessage req) throws Throwable {
>        WriteFuture writeFuture = session.write(req);
>        writeFuture = writeFuture.awaitUninterruptibly();
>
>        if (writeFuture.getException() != null) {
>            throw writeFuture.getException();
>        }
>
>        ReadFuture readFuture = session.read();
>        readFuture.awaitUninterruptibly();
>        if (readFuture.getException() != null) {
>            throw readFuture.getException();
>        }
>
>        return (UCPMessage) readFuture.getMessage();
>    }
>
> Is this the right way?
>
> The java doc for IoSession says, that the IoSession is thread safe. If I use 
> 'session.read()', I think my client is not thread safe anymore, because 
> 'session.read()' returns the next response from the queue, whatever if this 
> the response for this request or for another request (which is send with the 
> same client). I'm right?

This will work as long as you don't send multiple request for same
session. Its like you send a message and receive a response for the
session and then send next one. Its a bit risky coz you will hold up
your threads or your server may send a delayed response.

Alternatively you can provide a layer between your message
send/receive and the processing. Something like an Observer pattern.
Its fairly common in SNMP stacks, if you can look into any of them.

HTH !

> Do you have a better solution for a synchronous client which is maybe thread 
> safe?


> Thanks for your help,
> Christian



-- 
thanks
ashish

Blog: http://www.ashishpaliwal.com/blog
My Photo Galleries: http://www.pbase.com/ashishpaliwal

Reply via email to