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