Ability to transfer channels to socket channels owned by Mina
-------------------------------------------------------------

         Key: DIRMINA-218
         URL: http://issues.apache.org/jira/browse/DIRMINA-218
     Project: Directory MINA
        Type: New Feature

    Versions: 0.9.5    
    Reporter: dave irving
    Priority: Minor


Id like to be able to transfer file contents to a socket as effeciently as 
possible.
In some cases, making use of FileChannel#transferTo(long, long, 
WritableByteChannel) is a good choice, as it (in theory) allows the OS to do 
the transfer without bringing the file content in to user space (e.g. could 
make use of sendfile behind the scenes or whatever).

There is no direct way to obtain the channel from an IOSession - but even if 
there was - allowing a user to do this directly is dangerous as Mina could have 
queued writes pending for the channel.

This JIRA issue can hopefully kick off some discussion.
I see two basic ways to do this:

1) Add "sendFile(FileChannel)" or similar to IoSession. Mina then queues this 
request along with other pending writes. Of course, mina must take care of 
potentially several invocations to FileChannel#transferTo - as all bytes might 
not be transfered in one go.

2) Allow the user to schedule their own channel commands. For example, a "write 
command" scheduled by the user would be invoked by mina when the write queue 
was free. 

Im not sure that option 2 is really needed - and could be quite complex, so my 
preference is (1).

If we can get agreement on approach, I'll start on a patch.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to