On Sun, Nov 02, 2014 at 10:40:08PM +0300, Azat Khuzhin wrote: > On Fri, Oct 31, 2014 at 02:52:43PM +0100, Marcin Szewczyk wrote: > > I am struggling with exhaustion of file descriptors when using > > evbuffer_add_file(). My application responds to every line of input with > > contents of a file. I don't know how to efficiently control open > > descriptors number so when input rate is high I hit the open file
> And what you want to do when you are out of fds? > (Actually you already know this - open(2) will return -1 and errno will > be installed to EMFILE) Actually the final goal is to keep a pool of free fds for new connections and suspend evbuffer_add_file() responses. > *But* I guess you could use evbuffer_file_segment*() API, it have all > you need - cleanup callback, so you could track when some of fds closed, > and since you are already could track when some of fds opened (you call > open(2)), you will have 'open file descriptors count' implementation. > > Is this what you want? Yes. Now I feel embarrassed. Somehow I was so focused on libevent 2.0 that I missed callbacks for segments in 2.1. > P.S. evbuffer_add_file() do use evbuffer_file_segment*() API, but > without any cleanup callback and with EVBUF_FS_CLOSE_ON_FREE flag. Thank you very much for pulling me out from brain dead-lock. -- Marcin Szewczyk http://wodny.org mailto:[email protected] <- remove b / usuĊ b xmpp:[email protected] xmpp:[email protected] *********************************************************************** To unsubscribe, send an e-mail to [email protected] with unsubscribe libevent-users in the body.
