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
Fix For: 2.0.0-M1
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.