mina-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Trustin Lee (JIRA)" <j...@apache.org>
Subject [jira] Commented: (DIRMINA-218) Ability to transfer channels to socket channels owned by Mina
Date Sun, 04 Jun 2006 07:25:30 GMT
    [ http://issues.apache.org/jira/browse/DIRMINA-218?page=comments#action_12414630 ] 

Trustin Lee commented on DIRMINA-218:
-------------------------------------

I prefer the first approach.  The preferred name is 'writeFile(...)' because we already got
write() method. :)  Perhaps writeFile() method could wrap the parameters into an internal
request object and forward it to write() method for simplicity though we will need to ignore
the request object in codecs.

We also need to think about the opposite, writing the receive data into a FileChannel. What
would be the best way for this?  We need to detach the SocketChannel from MINA , turn it into
blocking mode, and use FileChannel.transferFrom.


> 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


Mime
View raw message