25int socket_read_method(
int,
char *,
int);
26int socket_write_method(
int,
const char *,
int);
27int file_read_method(
int,
char *,
int);
28int file_write_method(
int,
const char *,
int);
88 debugs(51, 3,
"fd_close FD " << fd <<
" " << F->
desc);
99socket_read_method(
int fd,
char *buf,
int len)
101 return xrecv(fd, (
void *) buf, len, 0);
105file_read_method(
int fd,
char *buf,
int len)
107 return _read(fd, buf, len);
111socket_write_method(
int fd,
const char *buf,
int len)
113 return xsend(fd, buf, len, 0);
117file_write_method(
int fd,
const char *buf,
int len)
119 return _write(fd, buf, len);
126 return xread(fd, buf, len);
132 return xwrite(fd, buf, len);
138 return recvmsg(fd,
reinterpret_cast<msghdr*
>(buf), MSG_DONTWAIT);
145 return i > 0 ? len : i;
151fd_open(
int fd,
unsigned int type,
const char *desc)
163 debugs(51, 3,
"fd_open() FD " << fd <<
" " << desc);
169 F->win32.handle = _get_osfhandle(fd);
176 F->
setIo(&socket_read_method, &socket_write_method);
182 F->
setIo(&file_read_method, &file_write_method);
186 fatalf(
"fd_open(): unknown FD type - FD#: %i, type: %u, desc %s\n", fd, type, desc);
257 " "<< std::right << std::setw(4) << i <<
" " << F->
desc);
287 static time_t
last = 0;
305 if (newReserve > x) {
307 debugs(51,
DBG_CRITICAL,
"WARNING: This machine has a serious shortage of filedescriptors.");
315 " due to failures (" << (
Squid_MaxFD - newReserve) <<
"/" <<
Squid_MaxFD <<
" file descriptors available)");
struct fde::_fde_flags flags
void setIo(READ_HANDLER *, WRITE_HANDLER *)
set I/O methods for a freshly opened descriptor
void clear()
Clear the fde class back to NULL equivalent.
A const & min(A const &lhs, A const &rhs)
#define debugs(SECTION, LEVEL, CONTENT)
void fatalf(const char *fmt,...)
int default_read_method(int, char *, int)
void fd_note(int fd, const char *s)
int msghdr_read_method(int, char *, int)
int default_write_method(int, const char *, int)
void fdAdjustReserved(void)
void fd_open(int fd, unsigned int type, const char *desc)
static void fdUpdateBiggest(int fd, int)
void fd_bytes(const int fd, const int len, const IoDirection direction)
int msghdr_write_method(int, const char *, int)
IoDirection
distinguishes reading/importing I/O operations from their writing/exporting counterparts
void ResetSelect(int fd)
reset/undo/unregister the watch for an FD which was set by Comm::SetSelect()
ssize_t xrecv(int socketFd, void *buf, size_t bufLength, int flags)
POSIX recv(2) equivalent.
ssize_t xsend(int socketFd, const void *buf, size_t bufLength, int flags)
POSIX send(2) equivalent.
int xread(int fd, void *buf, size_t bufSize)
POSIX read(2) equivalent.
int xwrite(int fd, const void *buf, size_t bufSize)
POSIX write(2) equivalent.
char * xstrncpy(char *dst, const char *src, size_t n)