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

Geoff Cadien commented on DIRMINA-601:
--------------------------------------

Mike,  You are correct that the ability to reuse a FileChannel is lost.  I'm 
not sure open file descriptors is really that big of an issue.  If your 
handling lots of open connections my guess is you'll saturate the network 
before you have problems with too many open files.   org.apache.tomcat.jni.File 
doesn't have a constructor, just a bunch of static methods.  The return value 
form File.open() is a long which I believe is a pointer to a struct which 
contains the fd and not the fd itself.  Now I suppose if we added IoSession to 
the SendableFile.send() method you could keep the SendableFile around and reuse 
it lowering the number of open file descriptors.

You're correct I did forget to add the patch to NioProcessor.  I add that 
shortly.

> 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