[ https://issues.apache.org/jira/browse/DIRMINA-495?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12551060 ]
Mike Heath commented on DIRMINA-495: ------------------------------------ In MINA 1.x you can pass the IoHandler into in the connect method. This is not the case in MINA 2.0. I really like the idea of being able to pass in a callback. I'm not so sure I like the idea of using an IoFutureListener though because it would require creating a SessionFuture type that would only be used to pass the session into the IoFutureListener. An interface like: public interface SessionCallback { void onSession(IoSession session); } is simple and sufficient callback mechanism, IMO. WDYT? > IoConnector needs a way to store information into the IoSession before the > IoHandler gets ahold of it > ----------------------------------------------------------------------------------------------------- > > Key: DIRMINA-495 > URL: https://issues.apache.org/jira/browse/DIRMINA-495 > Project: MINA > Issue Type: New Feature > Components: Core > Reporter: David M. Lloyd > Assignee: Mike Heath > Fix For: 2.0.0-M1 > > Attachments: IoConnector.patch, IoConnector.patch > > > It is often necessary to pass information into the IoHandler associated with > an IoConnector. Sometimes this information is needed even as early as > IoSession creation time. A mechanism is needed to pass information in to the > IoSession at the time you call IoConnector.connect(). Discussing this with > Mike Heath, we determined that a logical approach could be to have variants > of the connect() methods that accept information that can be attached to the > IoSession when it is created. > One option is to simply pass a Map in to the connect method. The contents of > the Map would be copied into the IoSession's attribute map after it is > constructed but before the IoHandler.sessionCreated method is created. In > addition, it seems likely that in many cases only one entry would need to be > added - in this case the user could simply do this: > ioConnector.connect(addr, Collections.singletonMap(MY_KEY, theValue)); > Another option would be to use variable argument lists to accept any number > of key-value pairs. The pairs could be represented by a class - > AttributePair for example. It could look like this: > public final class AttributePair<K, V> { > private final K key; > private final V value; > private AttributePair(K key, V value) { this.key = key; this.value = > value; } > public static <K, V> AttributePair<K,V> pair(K key, V value) { return > new AttributePair<K, V>(key, value); } > } > Then the user can use static imports to pull in the "pair" method. The > connect() method on IoConnector could accept a variable list of AttributePair > objects, so the user could write code like this: > ioConnector.connect(addr, pair(MY_KEY1, myValue), pair(MY_KEY2, > myValue2)); > Though this approach is somewhat more complicated than just using a Map. > Other approaches may also be discussed. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.