You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@mina.apache.org by "David M. Lloyd (JIRA)" <ji...@apache.org> on 2007/12/12 03:27:43 UTC

[jira] Updated: (DIRMINA-495) IoConnector needs a way to store information into the IoSession before the IoHandler gets ahold of it

     [ https://issues.apache.org/jira/browse/DIRMINA-495?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

David M. Lloyd updated DIRMINA-495:
-----------------------------------

    Attachment: IoConnector.patch

A patch that adds variants of IoConnector.connect() that accept a Map and copy the values to the IoSession attributes.  Not tested :-)

> 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
>
>         Attachments: 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.