Hi community,

Currently, MINA 2.0.0-M1-SNAPSHOT doesn't allow a user to call
setLocalAddresses() after IoAcceptor.bind() is called.  To change the
local addresses, a user have to unbind, change the localAddresses
property and bind again, which is not very convenient and causes
interruption of service.

MINA 1.x doesn't have this problem because user always specify the
local address and the IoHandler for each bind() call and the local
address for each unbind() (or unbindAll()).

However, considering an IoService is a logical group of managed
sessions with the same business logic, specifying IoHandler for every
bind() call doesn't make sense.  That's why we removed handler
parameter from bind() method.  One mistake I've made at the moment of
the change is that I also removed the local address parameter from the
bind() method.  I'd like to know what change do you prefer.  Let me
list my idea:

1) Change localAddress(es) to represent the list of the currently
bound addresses.  Add defaultLocalAddress(es) property, which is used
when bind() method is called with no parameter.  Also add
bind(localAddress), unbind(localAddress) and unbindAll() methods.

2) Retain the current trunk API and let setLocalAddresses() method
decide what address to bind and what address to unbind.

I think the first solution is better because A) it resembles the 1.x
API, 2) is easy to understand and 3) IoConnector already has the
similar API design:
* 
http://mina.apache.org/report/trunk/apidocs/org/apache/mina/common/IoConnector.html
(defaultRemoteAddress)

What do you think about the suggested changes?  Any feed back or whole
new idea is appreciated.  If there's no objection within next 72
hours, I will execute the idea #1.

Thank in advance,
Trustin
-- 
what we call human nature is actually human habit
--
http://gleamynode.net/
--
PGP Key ID: 0x0255ECA6

Reply via email to