[ 
https://issues.apache.org/jira/browse/DIRMINA-218?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12516200
 ] 

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

A few comments:

1. Class names should be a noun IMO, so I'd rather stick to FileRegion.  
session.write(FileRegion) already states that a user is *writing* a file region.

2. SendFileRegion.getBytesWritten needs to be renamed to getWrittenBytes to get 
aligned with IoSession.getWrittenBytes.  Or do we need to rename 
IoSession.getWrittenBytes?  Any advice is welcome.

> I like this approach a lot better than the initial way I was doing it. I was 
> also thinking that for use with SSL or compression (or any other filter that 
> mutates a ByteBuffer), we should create a filter that will convert a 
> SendFileRegion to a ByteBuffer by reading data from the fileChannel. We would 
> have to derive some mechanism to avoid OOM exceptions when dealing with large 
> files. 

Yeah, we need ChannelWriteFilter like we have StreamWriteFilter for an 
InputStream.

Great work!


> Ability to transfer channels to socket channels owned by Mina
> -------------------------------------------------------------
>
>                 Key: DIRMINA-218
>                 URL: https://issues.apache.org/jira/browse/DIRMINA-218
>             Project: MINA
>          Issue Type: New Feature
>    Affects Versions: 2.0.0-M1
>            Reporter: dave irving
>            Assignee: Mike Heath
>            Priority: Minor
>             Fix For: 2.0.0-M1
>
>         Attachments: sendfile.patch
>
>
> 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.
-
You can reply to this email to add a comment to the issue online.

Reply via email to