You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@mina.apache.org by "Trustin Lee (JIRA)" <ji...@apache.org> on 2007/11/06 07:26:51 UTC

[jira] Resolved: (DIRMINA-428) Message priorities

     [ 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.