Hi,
Im trying to performance test my NIO Http server at the
moment, and naturally I've written some clients which sit on
Mina.
With persistent connection testing out of the way, its
time to see how fast we can go when connections are
short-lived.
I've noticed in Mina 0.8 that there doesn't seem to be
a non-blocking way to make a connection to a server: something my client
applications will definately need to do. Have I missed
something?
However, I got hold of the latest code from svn, and it
seems this solves my problem: SocketConnector#connect no longer blocks the
caller.
Unfortunately, Im now faced with another problem: It
seems we can no longer provide a marker object when writing to an IoSession
(instead we now get returned a WriteFuture).
I was using this to mark a response as the "last for a
connection". E.g, if I received a connection-close HTTP header, then when I get
round to writing the response for that request I send a token object which
signals the last response. When Im called back to be told that the data has been
written, I can close the connection.
I can see two ways of preserving this behaviour with
the latest version, but both appear to be slightly
problematic:
1) I use the ByteBuffer as the token. However, Im not
sure if this is strictly safe (multiple threads scheduling the writes, buffer
pooling etc)
2) Block on the WriteFuture to wait for the op to
complete. However, I dont want to block the thread which provides the response
(an application thread), so Id need to add complexity (such as having another
thread who's only job is to block on the WriteFuture and close the connection
when the last write is complete).
Am I being stupid? Is there an easier way to do
this?
Any advice would be appreciated...
Dave
This e-mail and any attachment is for authorised use by the intended recipient(s) only. It may contain proprietary material, confidential information and/or be subject to legal privilege. It should not be copied, disclosed to, retained or used by, any other party. If you are not an intended recipient then please promptly delete this e-mail and any attachment and all copies and inform the sender. Thank you.
