[ 
https://issues.apache.org/jira/browse/DIRMINA-601?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12603767#action_12603767
 ] 

Mike Heath commented on DIRMINA-601:
------------------------------------

I see a number of difficulties with this situation.  With the existing code, it 
is possible to use a previously open FileChannel.  This makes it possible to 
serve a few files to many IoSessions without opening lots of file descriptors 
(which can be a limited resource in highly scalable applications.)  With the 
provided patch, this is not possible.

With APR, would it be possible to create a org.apache.tomcat.jni.File with a 
java.io.FileDescriptor.  I used a java.io.FileDescriptor for the asynchronous 
File I/O stuff I did with POSIX AIO a year or so ago and it worked well.  If 
so, the user could still send an open FileChannel in APR and we wouldn't have 
to open the file ourselves.

Geoff have you patched the existing NIO IoProcessor code?  I didn't see any of 
that in the attached patch.



> Add sendfile support to transport-apr
> -------------------------------------
>
>                 Key: DIRMINA-601
>                 URL: https://issues.apache.org/jira/browse/DIRMINA-601
>             Project: MINA
>          Issue Type: Improvement
>          Components: Core, Transport
>    Affects Versions: 2.0.0-M2
>            Reporter: Geoff Cadien
>         Attachments: sendfile-patches.zip
>
>
> I've take a shot at adding support for sendfile to transport-apr.  I've had 
> to make several changes because in the current code FileRegion is NIO 
> specific because of it's reliance on FileChannel.  I've made the following 
> changes:
> I've created an interface called SendableFile to take the place of using 
> FileChannel in FileRegion.  I've also created two implementations of this 
> interface, AprSendableFile and NioSendableFile.  The method of interest is 
> send(long position, long length) which is used to send the file.  Notice it 
> doesn't take an IoSession or a Channel as a parameter.  I tried using 
> generics to include  the proper subclass of IoSession but that didn't work 
> out very well. :-)
> There are still a couple of problems that need to be dealt with.  First and 
> foremost is that AbstractIoSession will create instances of DefaultFileRegion 
> in the write method when passed either a File or a FileChannel.  This causes 
> a problem because FileRegion is no longer NIO specific.  I don't have a 
> solution right now other than removing the code.
> The other problem is with FileRegionWriteFilter (and unit test), again 
> because FileRegion is NIO specific and exposes a FileChannel.  
> I'm hoping somebody can take a look at the code and provide some feedback if 
> they believe this is headed in the right direction or have a better idea.  
> I'll attach the patches shortly.

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