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

Trustin Lee resolved DIRMINA-428.
---------------------------------

    Resolution: Fixed
      Assignee: Trustin Lee

I've just added IoSessionDataStructureFactory which provides session attribute 
map and write request queue for a session.  By implementing this interface and 
changing IoService.sessionDataStructureFactory property, you can use whatever 
queue implementation you want, as long as it's thread safe.

This means you can implement prioritization of messages very easily.  For 
example, you could extend DefaultIoSessionDataStructureFactory and override 
getWriteRequestQueue() method to return a synchronized PriorityQueue 
constructed with a proper Comparator.

> Message priorities
> ------------------
>
>                 Key: DIRMINA-428
>                 URL: https://issues.apache.org/jira/browse/DIRMINA-428
>             Project: MINA
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Adrian Sandor
>            Assignee: Trustin Lee
>             Fix For: 2.0.0-M1
>
>
> I would like MINA to support sending messages with different priorities, so 
> that higher-priority messages will get sent out first (in the order that they 
> were added to the queue, if they have the same priority)
> Here's how I think this could be implemented:
> - define different priorities; I suggest using numeric constants, such as 
> LOWEST=0, LOW=25, NORMAL=50, HIGH=75, HIGHEST=100, allowing any custom values 
> from 0 to 100
> - add a priority field to WriteRequest, and implement Comparable using it
> - add a write(Object message, int priority) method to IoSession
> - make write(message) call write(message, NORMAL)
> - make the writeRequestQueue in the session implementations a priority queue, 
> but one that preserves the original order of "equal" elements
> - ensure that a higher priority message won't interrupt sending out another 
> message (if pending)
> - if desired, write an IoFilter that can manipulate the priority

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to